zrax/pycdc
GitHub: zrax/pycdc
一个 C++ 实现的 Python 字节码反汇编与反编译器,支持所有版本并还原为可读源码。
Stars: 4400 | Forks: 829
# Decompyle++
***一个 Python 字节码反汇编器/反编译器***
Decompyle++ 旨在将编译后的 Python 字节码反向翻译为
合法且可读的 Python 源代码。虽然其他项目也实现了这一目标,但 Decompyle++ 的独特之处在于
它支持任何版本的 Python 字节码。
Decompyle++ 包含字节码反汇编器(pycdas)和
反编译器(pycdc)。
顾名思义,Decompyle++ 使用 C++ 编写。
如果你希望贡献代码,请在 github 上 fork 我们:
https://github.com/zrax/pycdc
## 构建 Decompyle++
* 使用 [CMake](http://www.cmake.org) 生成项目或 makefile(详见 CMake 文档)
* 可通过以下选项控制调试功能:
| 选项 | 描述 |
| --- | --- |
| `-DCMAKE_BUILD_TYPE=Debug` | 生成调试符号 |
| `-DENABLE_BLOCK_DEBUG=ON` | 启用块调试输出 |
| `-DENABLE_STACK_DEBUG=ON` | 启用堆栈调试输出 |
* 构建生成的项目或 makefile
* 对于项目(如 MSVC),打开生成的项目文件并编译
* 对于 makefile,直接运行 `make`
* 要运行测试(在 \*nix 或 MSYS 上),执行 `make check JOBS=4`(可选
`FILTER=xxxx` 仅运行特定测试)
## 用法
**运行 pycdas**,即 PYC 反汇编器:
`./pycdas [PYC 文件路径]`
字节码反汇编结果将输出到标准输出。
**运行 pycdc**,即 PYC 反编译器:
`./pycdc [PYC 文件路径]`
反编译后的 Python 源代码将输出到标准输出。
所有错误信息输出到标准错误。
**封装的代码对象**:
两者均支持 Python 封装的代码对象(由 `marshal.dumps(compile(...))` 输出)。
要使用此功能,请在命令行中指定 `-c -v <版本>` —— 版本必须明确指定,因为对象本身不包含版本元数据。
## 作者、许可与致谢
Decompyle++ 由 Michael Hansen 和 Darryl Pogue 开发。
其他贡献者包括:
* charlietang98
* Kunal Parmar
* Olivier Iffrig
* Zlodiy
本软件根据 GNU 通用公共许可证第 3 版发布;
详见 LICENSE 文件。
标签:Bash脚本, C++, CMake, Decompyle++, pycdas, pycdas工具, pycdc, pycdc工具, Python, Python反编译, Python字节码, URL提取, 二进制分析, 二进制发布, 云安全监控, 云安全运维, 云资产清单, 代码恢复, 反编译, 反编译Python, 反编译工具, 反编译引擎, 反编译框架, 可执行文件, 字节码反汇编, 字节码解析, 开源工具, 数据擦除, 无后门, 源码还原, 跨版本支持, 软件逆向, 逆向工具, 逆向工程, 静态分析