Python3 编译成 EXE 文件通常是用工具如 PyInstaller、py2exe、cx_Freeze 等打包生成的。反编译 EXE 的目标是尽可能恢复出原始的 Python 源代码(或类似的代码)。不过,完全还原源代码不一定能做到,但可以提取出可读的 Python 字节码或伪代码。

下面是 Python3 EXE 反编译的常见步骤和工具:


Python3 EXE 反编译步骤与工具


一、准备工作

  • 确认 EXE 是由 Python 脚本打包生成(而不是其他语言编写)
  • 安装 Python3 环境
  • 准备反编译工具

二、常用工具介绍

工具名称功能描述适用情况备注
PyInstaller Extractor专门用来解包 PyInstaller 打包的 EXEPyInstaller 打包的 EXE可以提取 .pyc 文件
uncompyle6反编译 Python 字节码为 Python 源代码针对 .pyc 文件支持 Python 2.7 ~ 3.7
decompyle3反编译 Python 3.7+ 字节码针对 .pyc 文件支持 Python 3.7 及以上
pycdcPython 反编译器反编译 .pyc开源,支持 Python 3.x
Resource Hacker查看 EXE 资源通用工具用于提取 EXE 中资源

三、反编译步骤详解

1. 解包 EXE(以 PyInstaller 打包的 EXE 为例)

PyInstaller 把 Python 代码和运行时资源打包成一个 EXE,里面包含多个 .pyc 文件。

  • 下载并运行 PyInstaller Extractor:
git clone https://github.com/extremecoders-re/pyinstxtractor.git
cd pyinstxtractor
python pyinstxtractor.py /path/to/your/app.exe
  • 运行后,会解包 EXE,生成包含多个 .pyc 文件的文件夹。

2. 反编译 .pyc 文件

  • 使用 uncompyle6:
pip install uncompyle6
uncompyle6 extracted_file.pyc > recovered.py
  • 或使用 decompyle3(如果 Python 版本较高):
pip install decompyle3
decompyle3 extracted_file.pyc > recovered.py

3. 查看反编译结果

  • 反编译的代码可能会有一定程度的混淆和不完整,但整体逻辑结构通常可读。
  • 手动整理和修正代码,补充缺失部分。

四、注意事项

  • 反编译可能侵犯软件版权,请仅用于合法场景,如恢复自己丢失的代码。
  • 不同打包工具和版本,反编译难度不同。
  • 有些打包工具会做代码混淆和加密,反编译更困难。