反编译pyinstall生成的exe文件
记录一下简单的过程,也没怎么详细研究,只是对不加密打包的情况,要是加密的话这个方法是不行的。
一、解压缩exe文件
脚本pyinstxtractor.py可以实现解压缩,下载地址:https://sourceforge.net/projects/pyinstallerextractor/
直接执行即可
python3 pyinstxtractor.py c2x.exe
二、增加magic number
使用工具查看解压出来的c2x文件和struct文件头部的区别,不同版本可能有所不同。
比如struct头部比c2x文件多了16个字节(python3.7编译)。我们只需要将c2x文件的头部与struct修改为一致就行。
这16个字节可能代表了python的版本和编译时间等内容,反编译出来的c2x文件中是没有。
工具可以使用vim -b struct, 进入后使用:%!xxd可以16进制方式查看文件。
可以使用下面的脚本,将16字节加入到c2x文件中
import os,sys
fpath=".\c2x"
with open(fpath,'rb') as f:
#f.seek(12)
#f.tell()
with open(".\struct",'rb') as struct:
magic=struct.read(16)
with open(fpath+".pyc",'wb') as f2:
f2.write(magic+f.read())
三、pyc文件到py文件
可以使用在线工具进行 http://tools.bugscaner.com/decompyle/,简单明了。
参考链接:
https://zhuanlan.zhihu.com/p/109266820
https://blog.csdn.net/qq_34146694/article/details/113466082
http://tools.bugscaner.com/decompyle/