目的:将使用pyinstaller生成的exe还原成.py文件
1、从生成的exe中提取出.pyc文件
这里的方法有很多。。。可以使用pyinstxtractor。。也可以使用官方的archive_viewer.py(文末有下载)
我这里使用的是官方的archive_viewer.py。。
https://github.com/pyinstaller/pyinstaller/blob/develop/PyInstaller/utils/cliutils/archive_viewer.py
这里举的例子是某个师兄发出来的抢课的程序(python写的)。。。界面是这样的
(1)在程序同目录下打开cmd。。执行python archive_viewer.py qiangke.exe(这里是程序的名字)
这里有四个可以用的命令,分别是:
U: go Up one level
O <name>: open embedded archive name
X <name>: extract name
Q: quit
这里需要注意的一点是主要关注最后一行和出现程序名字的那一行。。。然后输入命令
x (程序名字) 回车之后输入需要生成的pyc文件名
至此。。第一步完成。。。
2、反编译pyc文件
由于每个pyc文件都有一个magic head,pyinstaller生成exe的时候会把pyc的magic部分去掉,在反编译的时候需要自己补齐。python2,需要补8个字节,后面的4个字节是时间戳,前面的4个字节是python编译的版本。。
当然这里有个小技巧
前4个字节可以通过struct文件获取
所以前面的是\x03\xf3\x0d\x0a。。后面的时间戳也可以用00 00 00 00代替
接着使用010 editor或者winhex打开pyc文件。。添加八个字节并保存
3、还原py文件
(1)可以使用在线网站直接上传还原。。
(2)使用uncompyle。。。
反编译:
uncompyle6 -o . pyc文件名
说明:
-o后面可以加上文件路径,代表反编译文件输出的位置,“.”表示输出到当前文件夹
反编译成功后会返回“# Successfully decompiled file”
可以使用uncompyle6 --help查看其他参数
没安装的先使用pip安装
pip install uncompyle6
然后同目录下打开控制台
uncompyle6 -o . qiangke.pyc
同目录下就会生成qiangke.py
工具: