首页
社区
课程
招聘
[原创]使用uncompyle2直接反编译python字节码文件pyo/pyc
发表于: 2014-1-17 20:28 3418

[原创]使用uncompyle2直接反编译python字节码文件pyo/pyc

2014-1-17 20:28
3418
这里主要介绍一下,python生成的pyo、pyc字节码文件的反编译工具uncompyle2。过程中将结合WingIDE最新版(WingIDE 5.0.2, Jan13,2014)的破解。无任何无技术含量(WingIDE居然木有代码混淆..)。

升级了最新的WingIDE 5.0.2(Jan13,2014),有10天的试用期,于是乎自己动手丰衣足食。
关于WingIde的破解之前论坛上已有两篇(见后文参考链接),其基本的方法就是用unpyclib来反编译,然后从类似的汇编或Smali一样的代码中找到关键的跳转点,然后在反编译前的abstract.pyo二进制文件中确定该跳转点,将其修改为相反的跳转指令即可。其中存在的一个比较麻烦问题就是,在反编译前的文件中寻找关键跳转指令的对应的位置。

我在着手时,搜了下python生成的字节码文件的反编译工具,有unpyclib和uncompyle2,发现uncompyle2可以直接转化为十分完美的python源码,并可以将反编译后的源码再次生成字节码文件!
于是乎,破解WingIDE 相对于之前的流程,现在显得更为简单了。

step 1 安装和配置uncompyle2
从github上获取uncompyle2,然后进行配置。
python setup.py install

之后从下载后解压的文件夹uncompyle2-master/scripts找到可以直接使用的脚本uncompyle2,实际上这就是一个python脚本文件。
step 2 反编译abstract.pyo
和前面帖子中方法一致,从WingIDE的安装目录的bin/2.7/中的src.zip中提取process\abstract.pyo进行反编译
./uncompyle2 ~/Desktop/abstract.pyo > ~/Desktop/abstract.py


然后打开即可看到整齐的、惊艳的py代码了!

step 3 修改abstract.py并重新生成pyo
在反编译的abstract.py中直接搜授权验证函数_GetTermDaysLeft,看到下图是不是狂喜呢?完整的注释。。

顺便扫扫代码,即使没注释也很容易看懂。。
所以。。
果断在函数开始处,添加return -1,并保存。

生成pyo
 python -O -m py_compile abstract.py

注:如果不带选项-O则生成的是pyc文件,-O选项则可以在生成代码时进行一定的优化。

step 4:大功告成
将生成的新abstract.pyo替换原来src.zip中的\process\abstract.pyo即可。需要注意的是:不能解压,替换,再打包!需要直接替换zip中相应文件!

最后替换安装目录中bin\2.7\下的src.zip即可。

现在打开WingIde就变成了授权永久有效!
并且生成src.zip可以在Mac OS和Windows上均有效(Linux未测试)。

总的就是想和大家分享下 反编译的神器 uncompyle2!

写到最后感觉跟Android的重打包似的

参考:
http://bbs.pediy.com/showthread.php?t=148699
http://bbs.pediy.com/showthread.php?t=138599
https://github.com/wibiti/uncompyle2/
http://www.cnblogs.com/dkblog/archive/2009/04/16/1980757.html

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 1
支持
分享
最新回复 (8)
雪    币: 272
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
不错,py编译为字节码不是真正的中间码。lua要做得好些
2014-1-17 22:22
0
雪    币: 213
活跃值: (507)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
好象非首创
2014-1-18 09:33
0
雪    币: 207
活跃值: (26)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
难道你是某司的?
2014-1-18 10:46
0
雪    币: 55
活跃值: (519)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
5
收下了。谢谢。
2014-1-18 10:58
0
雪    币: 30
活跃值: (37)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
其实重点只是想介绍 uncompyle2这工具可以很好的反编译python生成的pyc/pyo字节码。
至于是否原创无所谓。 我看到的是修改二进制文件的方法,而非反编译后python代码,所以自己简单实践了下。。
2014-1-18 12:10
0
雪    币: 30
活跃值: (37)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
什么司?
必然不是啊,目前无司
2014-1-18 12:11
0
雪    币: 30
活跃值: (37)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
是的。。但WingIDE居然还木有加混淆。。难道这是特意给买不起正版的屌丝留了条活路么。。
2014-1-18 12:16
0
雪    币: 807
活跃值: (2273)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
果然不俗,好工具,好思路。
2014-2-7 01:59
0
游客
登录 | 注册 方可回帖
返回
//