当前位置: 首页 > ds >正文

【Python】pyinstaller 反编译 exe

一、背景

        电脑磁盘出问题导致文件丢失,难受的是里面有工作代码,其中一个最新改过的还没及时备份。开始还以为是自己误删或者移到了其他地方,结果搜遍全盘也没找到,试了一些文件恢复方法(recuperaBit,chkdsk)也没用,还有个别文件夹虽然还在但是显示空文件夹而且打不开,重启修复磁盘后异常的文件夹恢复了,但是丢失的文件没有恢复。

        突然想到最新的代码虽然没有备份,但是能找到之前通过 pyinstaller 打包后的 exe,如果能反编译回来,再配合之前备份的代码,应该也能再恢复回来。网上能找到的方法基本都差不多,都是先将 exe 反编译回 pyc 文件,再将pyc文件恢复到py源文件。本文记录一种用起来最简单方法。

二、反编译

1. exe -> pyc

工具:pyinstxtractor-ng

下载地址:Releases · pyinstxtractor/pyinstxtractor-ng · GitHub

        作者提供了预编译程序,下载下来就可以用。将 pyinstxtractor-ng.exe 放到自己打包的程序所在目录,比如我的是 main.exe,将 main.exe 直接拖到 pyinstxtractor-ng.exe 里就可以反编译出pyc 文件。

        反编译出的 pyc 文件存放在 main.exe_extracted 文件夹里,main.pyc 是入口文件,其它代码在 PYZ-xxx 文件夹里。比如我在 main.py 里调用了 src 文件夹里的主程序 run.py,那么在 PYZ-xxx 文件夹里能找到 src 文件夹,src 里有 run.pyc。

 

2. pyc -> py

工具:pycdc

下载地址:Releases · extremecoders-re/decompyle-builds · GitHub

        现在有了 pyc,就需要借助 pycdc 反编译得到 py 文件。同样作者提供了预编译程序,将下载的 pycdc.exe 放到需要反编译的 pyc 文件所在目录下,打开 cmd 运行命令

pycdc.exe <file_name>.pyc

反编译成功,输出源码

        实测如果编译时使用的 python 版本是 3.9+,则反编译 pyc 文件会不全,部分地方会提示反编译失败,3.9 以下的版本没有问题,目前没找到解决方法。

三、总结

折腾了大半天好歹是拿到需要的源码了,经过这次教训,以后还是及时备份文件吧。

参考资料

[1] Python3.9及以上Pyinstaller 反编译教程(exe转py)-CSDN博客

http://www.xdnf.cn/news/4985.html

相关文章:

  • 手撕基于AMQP协议的简易消息队列-4(项目需求分析)
  • 现代健康养生新范式:多维度守护身心活力
  • TypeScript 中,属性修饰符
  • pytest自动化测试框架搭建,并生成allure测试报告
  • 【C语言干货】一维数组传参本质
  • 如何用LOTO示波器测量变压器带宽?
  • 一篇文章讲清楚mysql的聚簇索引、非聚簇索引、辅助索引
  • BGA底部填充胶固化异常延迟或不固化原因分析及解决方案
  • 垃圾回收的三色标记算法
  • <el-cascader中多选多层级点击节点也选中
  • Harmonyos-属性修改器和更新器
  • 低代码云MES、轻量级部署、让智造更简单
  • 探索大语言模型(LLM):词袋法(Bag of Words)原理与实现
  • 参考文献怎么对齐操作
  • Python 基础知识
  • 网络流量分析 | Snort
  • LeetCode 216.组合总和 III:回溯算法实现与剪枝优化
  • SpringBoot快速入门WebSocket(​​JSR-356附Demo源码)
  • 为何Google广告频繁拒登?常见原因与解决方法
  • 图表制作-折线图堆叠
  • 允许别的电脑连接我电脑wsl下5001、5002端口
  • 枚举 · 例13-【模板】双指针
  • 《Scala基础》
  • DeepSeek 赋能金融:从智能分析到高效服务的全链路革新
  • WHAT - react-query(TanStack Query) vs swr 请求
  • VUE——自定义指令
  • LabVIEW 2019 与 NI VISA 20.0 安装及报错处理
  • IEEE PRMVAI Workshop 17 | 智能医疗数据分析与应用
  • Baklib云中台赋能企业内容智管
  • Kubernetes外部访问服务全攻略:生产级方案详解