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, 云资产清单, 反编译器, 开发工具, 数据擦除, 无后门, 逆向工程