Rich Smith - [email protected]
pyREtic 最新版本可在以下地址找到:https://github.com/MyNameIsMeerkat/pyREtic
pyREtic 是一个可扩展的框架,旨在帮助执行各种针对 Python 语言项目的逆向工程任务。
它帮助逆向工程师从字节码(.pyc)恢复源代码(.py),特别是在被逆向的代码已采取手段试图阻止使用标准工具集进行反编译的情况下。
它由三个主要部分组成:
REpdb:一个以逆向工程为中心的 pdb 功能超集,允许逆向者轻松地与正在逆向的代码进行交互。
OpcodeRemap:该组件能够从更改了操作码布局以迷惑许多标准 Python 反编译器的 Python 运行时中推断出新的操作码表。
LiveUnpyc:是 Dmitri Kornev 的 UnPyc 反编译器项目 http://unpyc.sourceforge.net/ 的一个扩展,允许将内存中的活动 Python 对象通过 3 种不同方法反编译回 Python 源代码。
pyREtic 工具包中的功能旨在有效对抗大多数闭源 Python 开发者用来保护其分发代码不被以源代码形式阅读的保护措施。
pyREtic 的输出是生成一个对象的源代码表示,该对象可以在目标应用程序的运行实例中访问。这种表示只需要足够好,能够评估目标应用程序的安全性,而不必是绝对完美的副本。
详细的使用说明文档可在 docs/ 目录中找到。
pyREtic 根据 GPLv3 许可证发布,该许可证可在 docs/ 目录中找到,或访问 GPLv3。
pyREtic 使用的其他组件根据其各自的许可证发布:
UnPyc http://unpyc.sourceforge.net/ : BSD License
pycallgraph http://pycallgraph.slowchop.com/: GPLv2
pyREtic 诞生于我在 Immunity Inc 工作期间,并首次在拉斯维加斯的 BlackHat 2010 会议上公开介绍,随后在 Defcon 17 上展示。伴随其发布的论文可在 docs/ 目录中找到。
我现在已不再受雇于 Immunity,但 Dave Aitel 慷慨地允许我根据 GPL 发布代码,以便人们能够访问它并使其开发得以继续。
该框架的最新版本可在 https://github.com/MyNameIsMeerkat/pyREtic 找到。
由于社区中一些人重新燃起兴趣,我最近将项目迁移到了 GitHub 上的新家,并将发布一些至今尚未公开的增强功能。
未来将添加到 pyREtic 的功能将反映我在处理逆向 Python 应用程序方面的需求发展。不过,如果你有建议,请告诉我。
对于更感兴趣的人,关于 pyREtic 工作原理的技术细节可以在论文 pyREtic: In memory reverse engineering for obfuscated Python bytecode 中找到,该论文位于 docs/ 目录中,同时还有一个介绍它的演示文稿可以在以下地址找到:
http://prezi.com/kmyvgiobsl1d/pyretic-rich-smith-blackhatdefcon-2010