angr学习

参考链接:
https://xz.aliyun.com/t/6557

介绍

angr是一个基于python的二进制漏洞分析框架,它将以前多种分析技术集成进来,方便后续的安全研究人员的开发。它能够进行动态的符号执行分析(如,KLEE和Mayhem),也能够进行多种静态分析。

它专注于静态和符号分析,使其适用于各种任务。他寄生于2层环境中,第一层为angr环境,是一个利用virtualenvwrapper软件模拟出来的python环境,用于解决环境的不兼容问题,第二层是真实的python环境,也就是说我们需要执行python后才能使用import angr导入模块。

静态分析是指:直接阅读二进制编码。静态分析的特点是:覆盖全面。但是,静态分析有它的缺点。如前面所说,二进制文件本身并不好理解,甚至像天书一样。因此,静态分析想得到精确的结果,则需要进行长时间的分析,使分析时间变长。

动态分析不阅读二进制代码,而是直接把二进制文件扔到实际环境下执行,但是,由于设备的输入信息可以是任意的,因此动态分析不可能做到面面俱到。也就是说,分析结果虽然非常准确,但不能全面覆盖。

符号执行(Symbolic Execution)是一种程序分析技术。其可以通过分析程序来得到让特定代码区域执行的输入。使用符号执行分析一个程序时,该程序会使用符号值作为输入,而非一般执行程序时使用的具体值。在达到目标代码时,分析器可以得到相应的路径约束,然后通过约束求解器来得到可以触发目标代码的具体值。简单的来说,符号执行就是在运行程序时,用符号来替代真实值。符号执行相较于真实值执行的优点在于,当使用真实值执行程序时,我们能够遍历的程序路径只有一条,而使用符号进行执行时,由于符号是可变的,我们就可以利用这一特性,尽可能的将程序的每一条路径遍历,这样的话,必定存在至少一条能够输出正确结果的分支,每一条分支的结果都可以表示为一个离散关系式,使用约束求解引擎即可分析出正确结果,这就是符号执行的简单阐述。

安装工具

参考地址:http://pwn4.fun/2017/06/06/angr%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E/

#