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

【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博客

相关文章:

  • FPGA图像处理(四)------ 图像裁剪
  • 【C语言】(8)—指针2
  • 65.Three.js案例-使用 MeshNormalMaterial 和 MeshDepthMaterial 创建 3D 图形
  • Screeps Arena基础入门
  • 基于STM32、HAL库的CP2104 USB转UART收发器 驱动程序设计
  • 最新Spring Security实战教程(十四)OAuth2.0精讲 - 四种授权模式与资源服务器搭建
  • 湖南省密码协会成立,麒麟信安担任副会长单位共话密码创新应用之道
  • 【Python Web开发】05-WSGI概述
  • WordPress插件:WPJAM Basic优化设置
  • 数据库(MySQL)基础
  • 【AI提示词】费曼学习法导师
  • 【时时三省】(C语言基础)怎样定义和引用二维数组
  • 开平机:卷材高效成板的核心装备
  • 无需标记点,精准面部捕捉!无线面捕头盔赋予自由表演空间
  • Java大师成长计划之第15天:Java线程基础
  • 3.5/Q1,GBD数据库最新文章解读
  • ubuntu24.04安装anaconda
  • Spring Boot + Vue 实现在线视频教育平台
  • Spring Boot 3 + Undertow 服务器优化配置
  • modbus 帧信息格式
  • “浦东时刻”在京展出:沉浸式体验海派风情
  • 中日有关部门就日本水产品输华问题进行第三次谈判,外交部回应
  • 中国象棋协会坚决支持司法机关依法打击涉象棋行业的违法行为
  • 胖东来发布和田玉、翡翠退货说明:不扣手续费等任何费用
  • 深入贯彻中央八项规定精神学习教育中央第七指导组指导督导中国船舶集团见面会召开
  • 扶桑谈|素称清廉的石破茂被曝受贿,日本政坛或掀起倒阁浪潮