反编译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/