如何反编译PyInstaller生成的可执行文件以恢复Python源码
从PyInstaller打包的Unix可执行文件提取原始Python代码的方法
可以逆向提取,但还原度受打包配置影响,无法保证100%和原始代码完全一致。
具体操作步骤
- 第一步:解包可执行文件提取pyc字节码
你可以使用pyinstxtractor.py工具完成解包,将该工具与目标可执行文件放在同一目录后,执行以下命令:python3 pyinstxtractor.py 你的可执行文件名
执行完成后会生成后缀为_extracted的同名目录,你的原代码对应的.pyc字节码文件就存放在这个目录中。 - 第二步:反编译pyc文件得到Python源码
如果打包时没有开启加密,直接使用uncompyle6(适配Python3.6及以下)或decompyle3(适配Python3.7-3.9)工具即可完成反编译,执行命令如下:uncompyle6 目标pyc文件名.pyc > 还原后的代码.py
常见限制说明
- 如果打包时使用了
--key参数对字节码进行加密,没有对应的密钥则无法完成解包,也不能提取到有效的pyc文件 - 还原的代码会丢失所有原始注释、自定义空行与格式排版,如果打包前对代码做了混淆,变量名、函数名也不会恢复为原始命名
- Python3.10及以上版本新增的语法目前反编译工具支持度有限,部分代码可能会反编译失败或者出现语法错误
提示:你仅可逆向操作自己持有所有权的可执行文件,逆向提取他人所有的打包程序属于侵权行为,可能触犯相关法律规定。
内容的提问来源于stack exchange,提问作者satya
相关产品推荐
相关产品推荐

