分析器(Analyses)¶
angr 的目标是使在二进制程序上进行有用的分析变得容易。
为此,angr 允许您以通用格式打包分析代码,可以轻松应用于任何项目。我们将介绍如何编写自己的分析
学会写分析器 ,但是想法是所有分析都出现在
project.analyses 下(例如, project.analyses.CFGFast() ),可以
作为函数调用,返回分析结果实例。
内置分析¶
名称 |
描述 |
|---|---|
CFGFast |
构建程序的快速 控制流图 |
CFGEmulated |
构建程序的准确 控制流图 |
VFG |
对程序的每个函数执行 VSA,创建 值流图 并检测堆栈变量 |
DDG |
计算 数据依赖图 ,允许确定给定值依赖于哪些语句 |
BackwardSlice |
根据特定目标计算程序的 反向切片 |
Identifier |
在 CGC 二进制文件中识别常见的库函数 |
更多! |
angr 有很多分析,其中大部分都有效!如果您想知道如何使用其中一个,请提交一个问题请求文档。 |
弹性¶
分析可以编写成具有弹性,可以捕获和记录任何错误。
这些错误,根据如何捕获,被记录到分析的 errors 或 named_errors 属性中。但是,您可能希望以“快速失败”模式运行分析,以便不处理错误。为此,可以将参数 fail_fast=True 传递给分析构造函数。