如何反编译Python写的exe到py
参考链接:
https://blog.csdn.net/qq_44198436/article/details/97314626?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
https://www.cnblogs.com/pcat/p/8990482.html
https://www.cnblogs.com/pcat/p/11625300.html
准备工作:
1. 下载pyinstxtractor.py(百度上搜):https://github.com/extremecoders-re/pyinstxtractor
2. 安装uncompyle6: pip install uncompyle6
3. 下载16进制编辑器:https://www.jb51.net/softs/557257.html#downintro2
为了验证效果,接下来从创建py开始一步步看结果。
第一步:自己写一个py打包成exe -- target_exe.py(简单的两数相加)

#!/usr/bin/env python # _*_ coding: UTF-8 _*_ """================================================= @Project -> File : Python-20210127 -> target_exe.py.py @IDE : PyCharm @Author : Aimee @Date : 2021/2/23 8:57 @Desc : =================================================""" import sys def main(): print("target_exe started") # main()函数开始了 argc = len(sys.argv) if argc == 3: a = int(sys.argv[1]) b = int(sys.argv[2]) result = a + b # 两数相加 print("a + b =", result) if a < 0 or a > 100: # 对a的作用域进行判断 print("a is not in [0, 100]") if a > 0 and b > 0: print("a and b >0") if __name__ == '__main__': main()
target_exe.py->target_exe.exe
pyinstaller -F target_exe.py
将target_exe.py重命名为target_exe_origin.py
第二步:解压exe
将pyinstxtractor.py放在与exe同级目录下,运行
python pyinstxtractor.py target_exe.exe
会在当前目录生成一个target_exe.exe_extracted文件夹,里面会有一些没有后缀的文件名,target_exe就是我们需要进行反编译的文件。在正向编译过程中,生成的pyc会把python版本信息和时间戳去掉,但是反编译的时候我们需要将其补齐。
注意到在target_exe.exe_extracted还存在一个没有后缀名的文件struct,用16进制编辑器打开struct和target_exe文件。
两个文件都有E3,可以看到struct在E3的前面还有一段,应该就是Python版本和时间戳了,将前面一段复制到target_exe中,直接在16进制编辑器里面复制就好了。
保存,然后重命名target_exe为target_exe.pyc。
第三步:反编译pyc文件,得到target_exe.py
uncompyle6 -o target_exe.py target_exe.pyc
得到target_exe.py,那么现在将得到的target_exe.py和原本写的target_exe_origin.py进行对比,看看结果
可以发现,注释没有了,双引号变单引号,if-and变成两个if,功能没啥变化。
OK,反编译就讲到这里。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)