分析 Analyses
angr的目标是使在二进制程序上执行有用的分析更加容易。到这个的最后,angr允许你以一种能够轻松地应用到任何项目的通用格式将分析代码打包。我们之后将介绍编写你自己的分析,但是思想是所有的分析出现在project.analyses
(比如,project.analyses.CFGFast()
)下面,并且可以作为函数调用,返回分析结果实例。
内置分析 Built-in Analyses
名称 | 描述 |
---|---|
CFGFast | 构建程序的一个快速控制流图。 |
CFGEmulated | 构建程序的一个准确控制流图。 |
VFG | 在程序的每一个函数上执行VSA,创建一个值流图并且检测栈变量。 |
DDG | 计算数据依赖图,可以得到给定值依赖的声明。 |
BackwardSlice | 计算关于一个特定目标的后向切片。 |
Identifier | 在CGC二进制文件中标识常见的库函数。 |
More! | angr有不少分析,大多数都能工作。如果你想要知道如何使用其中的一个,请提交一个issue以请求文档。 |
恢复能力 Resilience
分析可以被编写为具有恢复能力的,并且捕获并记录基本上任何错误。这些错误,根据它们如何被捕获,被记录到分析的errors
或者named_errors
属性中。然而,你可能想要以“快速失败”模式执行一个分析,从而不处理错误。为了实现这一点,可以传递fail_fast=True
参数给分析构造器。