{
  "added_at": "2026-10-19",
  "additional_evidence_urls": [
    "https://github.com/zrax/pycdc/blob/b4289760970dbc399684f1e155ec6d1ea1cc787e/CMakeLists.txt",
    "https://github.com/zrax/pycdc/blob/b4289760970dbc399684f1e155ec6d1ea1cc787e/pyc_module.h",
    "https://github.com/zrax/pycdc/tree/b4289760970dbc399684f1e155ec6d1ea1cc787e/bytes",
    "https://github.com/zrax/pycdc/tree/b4289760970dbc399684f1e155ec6d1ea1cc787e/tests/compiled",
    "https://github.com/zrax/pycdc/tree/b4289760970dbc399684f1e155ec6d1ea1cc787e/tests/xfail",
    "https://github.com/zrax/pycdc/blob/b4289760970dbc399684f1e155ec6d1ea1cc787e/.github/workflows/linux-ci.yml",
    "https://github.com/zrax/pycdc/blob/b4289760970dbc399684f1e155ec6d1ea1cc787e/.github/workflows/msvc-ci.yml",
    "https://github.com/zrax/pycdc/blob/b4289760970dbc399684f1e155ec6d1ea1cc787e/LICENSE"
  ],
  "category": "native-analysis",
  "description_en": "C++ disassembler and decompiler for compiled Python bytecode that aims to support bytecode from any Python version. pycdas prints the disassembly of a .pyc file, and pycdc prints reconstructed Python source to stdout with errors on stderr; both also accept raw marshalled code objects when the Python version is given on the command line. The source carries opcode tables for Python 1.0 through 3.13.",
  "description_zh": "用 C++ 编写的 Python 字节码反汇编器与反编译器，目标是支持任意 Python 版本的字节码。pycdas 输出 .pyc 文件的反汇编结果，pycdc 则把重建出的 Python 源码输出到标准输出，错误信息输出到标准错误；在命令行中指定 Python 版本后，两者也能处理原始的 marshal 代码对象。源码中包含 Python 1.0 至 3.13 的操作码表。",
  "entry_url": "https://awesomerea.org/resources/pycdc/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/pycdc/",
  "evidence_url": "https://github.com/zrax/pycdc/blob/b4289760970dbc399684f1e155ec6d1ea1cc787e/README.markdown",
  "group": "tools",
  "id": "pycdc",
  "json_url": "https://awesomerea.org/resources/pycdc/record.json",
  "kind": "tool",
  "markdown_url": "https://awesomerea.org/resources/pycdc/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/pycdc/index.md",
  "name": "Decompyle++ (pycdc)",
  "name_zh": "Decompyle++（pycdc）Python 字节码反编译器",
  "record_type": "resource",
  "relationship": "foundation",
  "requirements": [
    "The project publishes no releases or tags, so it is built from source; the reviewed master commit dates from 2026-04-07. The README makes no per-version completeness claim. The .pyc loader recognizes bytecode up to Python 3.13 but not 3.14, and the regression suite’s compiled samples stop at 3.12: 20 of its 191 samples are for 3.10–3.12, and 39 more are kept as expected failures.",
    "CMakeLists.txt requires CMake 3.12+ and a C++11 compiler, and GCC and Clang builds treat warnings as errors. make check runs the tests on Unix-like systems or MSYS; CI builds and tests on Ubuntu and as 32-bit Visual Studio 2022 builds on Windows, where the executables are kept only as workflow artifacts.",
    "Input .pyc files or marshalled code objects come from the user; recovering them from packaged applications is outside the tool. The README describes no verification of decompiled output, so uncertain regions should be compared with the pycdas disassembly.",
    "GPL-3.0. Recovered source remains subject to the rights of the original program’s owner."
  ],
  "requirements_zh": [
    "该项目不发布任何版本或标签，需从源码构建；所审阅的 master 提交日期为 2026-04-07。README 未说明各 Python 版本的支持完整程度。.pyc 加载器可识别到 Python 3.13 的字节码，但不识别 3.14；回归测试中的编译样本只到 3.12：191 个样本中有 20 个针对 3.10–3.12，另有 39 个作为预期失败用例保留。",
    "CMakeLists.txt 要求 CMake 3.12+ 和 C++11 编译器，GCC 和 Clang 构建会把警告视为错误。make check 可在类 Unix 系统或 MSYS 上运行测试；CI 在 Ubuntu 上构建并测试，在 Windows 上则以 32 位 Visual Studio 2022 构建并测试，生成的可执行文件仅作为工作流产物保留。",
    "输入的 .pyc 文件或 marshal 代码对象由使用者提供；从打包应用中取得这些文件不在本工具范围内。README 未说明对反编译结果的任何验证，存疑之处应与 pycdas 的反汇编输出对照。",
    "采用 GPL-3.0 许可。恢复出的源码仍受原程序权利人的权利约束。"
  ],
  "targets": [
    "app",
    "binary"
  ],
  "url": "https://github.com/zrax/pycdc",
  "verification": "source-reviewed",
  "verified_at": "2026-10-19"
}
