对Python打包的.exe进行反编译

1、准备工作

(1)所需的16进制编辑工具
WinHex官网下载

(2)pyinstxtractor.py
GitHub项目下载

(3)安装uncompyle6

pip install uncompyle

(4)将要反编译的.exe文件和pyinstxtractor.py放入同一目录内。
file

2、反编译

(1)将.exe转换成.pyc文件
在该目录打开命令行窗口,执行命令python pyinstxtractor.py RS2IPParser.exe完成转换。
命令格式:python pyinstxtractor.py 文件名.exe

file

生成名为RS2IPParser.exe_extracted的文件夹。此处RS2IPParser.exe为要反编译的文件。

(2)将主程序修复为.pyc文件
打开文件夹可以看到有很多文件,里面包含了RS2IPParser.exe的主程序parse,这就是我们要反编译的文件,其他的都是依赖库。由于pyinstxtractor.py的不足,主程序转换出来的格式不对,这时需要我们进行手动修复。
file

主程序(记得备份)
file

用之前准备的工具WinHex打开该目录的主程序文件和struct文件。此处我打开的是parse和struct。
两个文件进行对比,发现parse前面少了几个字节。
file

将缺少的部分从struct复制到parse,注意需要复制为十六进制数值。
file
file

粘贴到前面。
file
file

完成,按Ctrl+S进行保存。
file

将parse后缀改为.pyc。(改前备份)
file

(3)转换为.py文件
在该目录打开命令行窗口,执行命令uncompyle6 parse.pyc > parse.py将其转换成.py文件。
file

最后得到的源码文件,打开查看就好了。
file