mariopenterman/pyfaithful
GitHub: mariopenterman/pyfaithful
pyfaithful 是一个字节和行号精准的 Python 反编译器,致力于将编译后的 Python bytecode 高保真地还原为人类可读的源代码。
Stars: 1 | Forks: 0
# pyfaithful
***一个字节和行号精准的 Python 反编译器***
pyfaithful 将编译后的 Python byte-code 转换回有效且人类可读的
Python 源码,并支持任意版本 Python 的 byte-code。它的重点是
**精准重构**:特别是对于 Python 3.11,它的目标是让反编译出的
源码重新编译后能得到*相同*的 byte-code (`co_code`),并且在 `.pyc` 允许的
范围内,获得与原始代码*相同*的源码位置 (`co_positions`)。
pyfaithful 包含一个 byte-code 反汇编器 (`pycdas`) 和一个
反编译器 (`pycdc`),使用 C++ 编写。
## 构建 pyfaithful
* 使用 [CMake](http://www.cmake.org) 生成项目或 makefile(详情请参阅 CMake 的文档)
* 可以将以下选项传递给 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 文件路径]`
byte-code 反汇编结果将打印到 stdout。
**要运行 pycdc**(即 PYC 反编译器):
`./pycdc [PYC 文件路径]`
反编译后的 Python 源码将打印到 stdout。
任何错误都将打印到 stderr。
**Marshalled code 对象**:
这两个工具都支持 Python marshalled code 对象,即 `marshal.dumps(compile(...))` 的输出。
要使用此功能,请在命令行上指定 `-c -v ` —— 必须指定版本,因为对象本身不包含版本元数据。
## 作者、许可与致谢
pyfaithful 是 **Decompyle++** 的一个独立分支,后者由
**Michael Hansen 和 Darryl Pogue** 开发,并包含来自
charlietang98、Kunal Parmar、Olivier Iffrig 和 Zlodiy 的额外上游贡献。原始项目
位于 https://github.com/zrax/pycdc。
分支修改(2026年)版权归 (C) Mario Penterman 所有。
pyfaithful 基于 **GNU General Public License,
version 3** 的条款发布 —— 与原始许可证相同 —— 并且保持 GPLv3。有关
完整文本,请参阅 `LICENSE` 文件。此分支未受原作者 endorsement 或与其有关联。
标签:Bash脚本, C++, Python, SOC Prime, 云资产清单, 反编译器, 开发工具, 数据擦除, 无后门, 逆向工程