MASTG-TOOL-0030: Angr
Angr 是一个用于分析二进制文件的 Python 框架。它可用于静态和动态符号(“混合”)分析。 换句话说:给定一个二进制文件和一个请求的状态,Angr 将尝试使用形式化方法(一种用于静态代码分析的技术)查找路径以及暴力破解来达到该状态。 使用 angr 到达请求状态通常比手动执行调试步骤和搜索到达所需状态的路径要快得多。 Angr 在 VEX 中间语言上运行,并附带 ELF/ARM 二进制文件的加载器,因此它非常适合处理本机代码,例如本机 Android 二进制文件。
Angr 允许在给定大量插件的情况下进行反汇编、程序检测、符号执行、控制流分析、数据依赖性分析、反编译等。
自版本 8 以来,Angr 基于 Python 3,可以使用 pip 在 *nix 操作系统、macOS 和 Windows 上安装
pip install angr
angr 的某些依赖项包含 Python 模块 Z3 和 PyVEX 的派生版本,这些版本将覆盖原始版本。 如果您将这些模块用于其他用途,则应使用 Virtualenv 创建一个专用的虚拟环境。 或者,您始终可以使用提供的 docker 容器。 有关更多详细信息,请参阅安装指南。
全面的文档,包括安装指南、教程和用法示例,可在 Angr 的 Gitbooks 页面上找到。 完整的 API 参考 也可用。
您可以从 Python REPL(例如 iPython)中使用 angr 或编写您的方法脚本。 尽管 angr 具有一定的学习曲线,但我们建议您在想要以蛮力方式达到可执行文件的给定状态时使用它。 请参阅 符号执行,这是一个关于它如何工作的很好的例子。