angr

本文只是很粗浅地介绍了angr的静态分析功能的基本使用,如果要实现文章中没介绍的功能,还是要深入angr的源码去看这些对象有哪些属性和方法。
想法来源于看雪SDC议题回顾|代码混淆研究新方向。
angr是有名的符号执行工具。众所周知,符号执行最大的问题就是状态爆炸。因此,angr中也内置了很多缓解符号执行的策略。本文主要介绍angr里的一些内置机制是如何缓解状态爆炸的。
上一回我们从angr的__init__.py文件入手,到解析了project.py文件的内容,了解了一个基本的angr项目是怎么一步一步初始化到建立完成开始可以执行操作的,现在我们把目光放回到所有angr项目的基石-CLE类与angr的中间语言VEX-IR语言上,更进一步的理解整个angr系统的工作情况。
​ Angr框架的分析对象是二进制程序,不依赖程序源码,支持x86/64、ARM/AArch64,MIPS等多个架构,之前的版本更新还引入了Java的支持。
承接上一篇文章,上一章教程我们主要学习了angr的Hook接口的利用,这次我们把剩下的题目一网打尽。
在之前的学习中我们学会了利用angr符号化寄存器、栈上的值、内存、malloc开辟的动态内存和文件系统,感受到了angr强大的仿真系统,在CTF中题目的简单利用,接下来我们要学习angr的更多的高级用法。
承接上一篇的文章,我们学习了angr应用的大概基础框架和符号化寄存器,现在我们来继续学习angr的更多神奇用法
本文基于一个GitHub上关于Angr在CTF上应用的题库,我自己的笔记和题目二进制文件,以及注释脚本EXP我另外开了一个仓库。