工具

decompyle3 Python 3.7–3.8 字节码反编译器

uncompyle6 作者对该项目的重构版本,可把 Python 3.7 和 3.8 的字节码(包括部分 PyPy 3.7 和 3.8 字节码)还原为等价的 Python 源码;更早版本的字节码仍由 uncompyle6 处理。它借助配套的 xdis 库反汇编代码对象,再用重构后的语法对指令流进行词法处理和解析,生成语法树并据此输出源码;它还能只反编译给定起止偏移之间的代码,或通过 decompyle3-code 只反编译文件中的 lambda、生成器和各类推导式。README 指出,仅靠语法重写并不能解决 uncompyle6 在控制流上的根本问题,作者正在另一个未公开的项目中用基于支配关系的分析来解决。

使用条件与局限

  • 审阅时最新版本为 3.9.3,于 2025-10-01 在 GitHub 和 PyPI 发布;所审阅的 master 提交日期为 2026-07-21,比该版本晚 18 个提交,版本号为 3.9.4.dev0。README 称代码可在 Python 3.7 或 3.8 上运行,而 pyproject.toml 要求 Python 3.7+,分类信息列到 3.13;master 分支的 CI 在 Python 3.13 下测试,另有独立的 python-3.7-to-3.10 分支在 3.8 下测试;3.9.3 版本还另行提供面向 3.7、3.8 和 3.9 的 wheel 与 egg 包。依赖高于 6.2 的 xdis、1.8.9 及以上但低于 1.9.2 的 spark-parser,以及 click;在 xdis 发布下一个版本之前,master 分支的 CI 从其 git 仓库安装 xdis。
  • README 称已用 Python 3.7 和 3.8 的字节码测试过,回归测试保留了 3.7 和 3.8 的编译样本以及少量 PyPy 样本;发布说明指出,高于 3.8 的字节码不会被反编译。作者提醒反编译仍有大量缺陷,并表示在项目获得更多资助之前不打算认真投入 3.8 或 3.9 的支持。候选发布版本的魔数、PJOrion 或其他混淆代码以及 Cython 和 MicroPython 均不受支持,处理超长的表达式或语句列表也很慢。
  • 输入的 .pyc 或 .pyo 文件由使用者提供;它不能直接反编译 Py2EXE 生成的可执行文件,这类打包程序中的字节码需先行提取。README 所述的 --syntax-verify 选项在所审阅的命令行中为 --verify syntax,另有 --verify run;只有当检查用的解释器与字节码版本一致时,语法检查才有意义,因此 README 建议用 unpyc37 等其他反编译器交叉核对,并借助能自我测试的程序(包括 Python 标准库的测试)进行检验。恢复出的源码仍受原程序权利人的权利约束。
  • pyproject.toml 声明采用 GPL-3.0-or-later,COPYING 收录 GPL-3.0 全文。本次未安装或反编译任何内容,所审来源也未确立与 REA 的关联。

关于此条目

类型
工具
类别
原生分析工具
关联
基础工具
目标
应用 · 二进制

来源复核于

说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。

报告条目过时 建议修正翻译

一手来源

  1. README.rst GitHub · rocky/python-decompile3 · 修订 0b97289
  2. NEWS.md GitHub · rocky/python-decompile3 · 修订 0b97289
  3. pyproject.toml GitHub · rocky/python-decompile3 · 修订 0b97289
  4. decompyle3/version.py GitHub · rocky/python-decompile3 · 修订 0b97289
  5. decompyle3/bin/decompile.py GitHub · rocky/python-decompile3 · 修订 0b97289
  6. decompyle3/bin/decompile_code_type.py GitHub · rocky/python-decompile3 · 修订 0b97289
  7. .github/workflows/ubuntu.yml GitHub · rocky/python-decompile3 · 修订 0b97289
  8. test GitHub · rocky/python-decompile3 · 修订 0b97289
  9. COPYING GitHub · rocky/python-decompile3 · 修订 0b97289
  10. https://github.com/rocky/python-decompile3/releases/tag/3.9.3
  11. https://pypi.org/project/decompyle3/3.9.3/

同分区更多条目:原生二进制

原生二进制分区全部 105 项资源