Python3 编译成 EXE 文件通常是用工具如 PyInstaller、py2exe、cx_Freeze 等打包生成的。反编译 EXE 的目标是尽可能恢复出原始的 Python 源代码(或类似的代码)。不过,完全还原源代码不一定能做到,但可以提取出可读的 Python 字节码或伪代码。
下面是 Python3 EXE 反编译的常见步骤和工具:
Python3 EXE 反编译步骤与工具
一、准备工作
- 确认 EXE 是由 Python 脚本打包生成(而不是其他语言编写)
- 安装 Python3 环境
- 准备反编译工具
二、常用工具介绍
工具名称 | 功能描述 | 适用情况 | 备注 |
---|---|---|---|
PyInstaller Extractor | 专门用来解包 PyInstaller 打包的 EXE | PyInstaller 打包的 EXE | 可以提取 .pyc 文件 |
uncompyle6 | 反编译 Python 字节码为 Python 源代码 | 针对 .pyc 文件 | 支持 Python 2.7 ~ 3.7 |
decompyle3 | 反编译 Python 3.7+ 字节码 | 针对 .pyc 文件 | 支持 Python 3.7 及以上 |
pycdc | Python 反编译器 | 反编译 .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. 查看反编译结果
- 反编译的代码可能会有一定程度的混淆和不完整,但整体逻辑结构通常可读。
- 手动整理和修正代码,补充缺失部分。
四、注意事项
- 反编译可能侵犯软件版权,请仅用于合法场景,如恢复自己丢失的代码。
- 不同打包工具和版本,反编译难度不同。
- 有些打包工具会做代码混淆和加密,反编译更困难。
发表回复