引言
当遇到丢失源码的Python打包exe程序时,我们可能需要逆向分析其逻辑。之前写过《Pyinstaller 反编译》,最近发现有些工具比较老了,反编译不成功。
所以重新整理了下,整个过程无需依赖反编译工具,借助AI即可完成(感谢强大的AI)。
使用pyinstxtractor解包exe
安装工具:
1
pip install pyinstxtractor
解包exe文件:
1
python -m pyinstxtractor myapp.exe
执行后生成
myapp.exe_extracted
文件夹,其中包含:.pyc
文件(编译后的字节码)- 依赖库和资源文件
》注意:最好是用跟exe同样的python版本,不然有可能反编译不成功
》不知道是什么版本,就随便用一个版本先解包,生成的文件夹里有版本的dll文件
》可以创建python虚拟环境来操作,参考《多版本Python环境管理指南》关键文件定位:
在解包目录中寻找PYZ-00.pyz_extracted
文件夹,主程序的pyc文件通常位于此处(如myapp.pyc
)
pyc文件反编译
使用以下脚本读取pyc并反编译为字节码:
1 | import dis |
关键说明:
- 文件头偏移量根据Python版本调整:
- Python 3.7+:16字节
- Python 3.3-3.6:12字节
- 更旧版本:8字节
- 若遇到
ValueError
,可尝试不同偏移量
通过AI还原源码(DeepSeek示例)
- 打开 DeepSeek AI
- 输入提示词:
1
2
3
4
5
6
7请将以下Python字节码还原为可读的Python源码:
(粘贴bytecode.txt中的全部内容)
注意:
1. 还原函数和变量名称
2. 保持原始逻辑结构
3. 添加必要的注释