一款Python字节码反汇编器/反编译器
Decompyle++ 旨在将编译后的 Python 字节码转换回有效且可读的 Python 源代码。尽管其他项目也以不同程度的成功实现了这一点,但 Decompyle++ 的独特之处在于它试图支持任何 Python 版本的字节码。
Decompyle++ 包含一个字节码反汇编器 (pycdas) 和一个反编译器 (pycdc)。
顾名思义,Decompyle++ 是用 C++ 编写的。 如果您希望贡献代码,请访问 https://github.com/zrax/pycdc 在 GitHub 上 fork 我们。
使用 CMake 生成项目或 makefile(详见 CMake 文档)
可以向 CMake 传递以下选项以控制调试功能:
| 选项 | 描述 |
|---|---|
-DCMAKE_BUILD_TYPE=Debug | 生成调试符号 |
-DENABLE_BLOCK_DEBUG=ON | 启用块调试输出 |
-DENABLE_STACK_DEBUG=ON | 启用堆栈调试输出 |
构建生成的项目或 makefile
makemake check JOBS=4(可选地使用 FILTER=xxxx 仅运行特定测试)运行 pycdas,即 PYC 反汇编器:
./pycdas [PYC 文件路径]
字节码反汇编结果将输出到 stdout。
运行 pycdc,即 PYC 反编译器:
./pycdc [PYC 文件路径]
反编译后的 Python 源代码将输出到 stdout。
任何错误将输出到 stderr。
编组后的代码对象:
这两个工具都支持 Python 编组后的代码对象,即 marshal.dumps(compile(...)) 的输出。
要使用此功能,请在命令行中指定 -c -v <版本> - 必须指定版本,因为对象本身不包含版本元数据。
Decompyle++ 是 Michael Hansen 和 Darryl Pogue 的作品。
其他贡献者:
本项目根据 GNU General Public License, version 3 的条款发布; 详情请参阅 LICENSE 文件。