如何从cx_Freeze打包的.exe文件中恢复丢失的Python脚本?
从cx_Freeze打包的exe中恢复Python脚本方案
能恢复,但恢复后的代码会丢失原脚本的注释、空白格式等非功能性内容,核心逻辑、变量名和代码结构会完整保留——因为cx_Freeze打包时会把原Python脚本编译成.pyc字节码文件,存放在exe解压后的lib目录中,我们只需反编译这些.pyc文件即可。
具体步骤
1. 提取lib目录中的.pyc文件
- 若你的exe是单文件打包:用7-Zip等压缩工具直接打开exe,将内部所有文件提取到本地文件夹,找到其中的
lib目录。 - 若你的exe是多文件打包:直接找到exe所在目录下的
lib文件夹。 - 在lib目录里寻找和原脚本同名的
.pyc文件,入口脚本通常对应__main__.pyc;部分文件可能存放在__pycache__子文件夹中。
2. 反编译.pyc文件
工具一:uncompyle6(适配Python 2.7~3.8)
- 安装工具:
pip install uncompyle6 - 执行反编译命令,将pyc转为py文件:
uncompyle6 target_script.pyc > recovered_script.py
工具二:decompyle3(适配Python 3.7+)
- 安装工具:
pip install decompyle3 - 执行反编译命令:
decompyle3 target_script.pyc > recovered_script.py
3. 修复与验证
- 反编译后的代码可能存在少量缩进、换行错误,或是特殊语法还原偏差,需要手动调整。
- 运行恢复后的
.py脚本,对比原exe的功能,确认逻辑一致即可。
内容的提问来源于stack exchange,提问作者Madson Magalhaes
相关产品推荐
相关产品推荐

