分析器(Analyses)

angr 的目标是使在二进制程序上进行有用的分析变得容易。 为此,angr 允许您以通用格式打包分析代码,可以轻松应用于任何项目。我们将介绍如何编写自己的分析 学会写分析器 ,但是想法是所有分析都出现在 project.analyses 下(例如, project.analyses.CFGFast() ),可以 作为函数调用,返回分析结果实例。

内置分析

名称

描述

CFGFast

构建程序的快速 控制流图

CFGEmulated

构建程序的准确 控制流图

VFG

对程序的每个函数执行 VSA,创建 值流图 并检测堆栈变量

DDG

计算 数据依赖图 ,允许确定给定值依赖于哪些语句

BackwardSlice

根据特定目标计算程序的 反向切片

Identifier

在 CGC 二进制文件中识别常见的库函数

更多!

angr 有很多分析,其中大部分都有效!如果您想知道如何使用其中一个,请提交一个问题请求文档。

弹性

分析可以编写成具有弹性,可以捕获和记录任何错误。 这些错误,根据如何捕获,被记录到分析的 errorsnamed_errors 属性中。但是,您可能希望以“快速失败”模式运行分析,以便不处理错误。为此,可以将参数 fail_fast=True 传递给分析构造函数。