本文系统化实现了多种二进制分析技术的框架。
目标:跨架构、跨平台、支持不同的分析范式(抽象化内存模型和数据域)、可用性(学习曲线)。易于复现已有的二进制分析方案。
将架构特定的代码转换为中间语言。使用VEX(IR lifter of the Valgrind project)。
使用CLE完成,支持任何二进制程序。CLE抽象了各种二进制格式,可以加载不同的依赖。包括POSIX-compliant systems (Linux, FreeBSD, etc.), Windows, and the DECREE OS created for the DARPA Cyber Grand Challenge.
SimuVEX模块用于表示程序状态,SimState实现了一系列状态插件
SimState中的寄存器和内存使用Claripy代表,抽象了表示,跟踪表达式的所有操作。
表达式可以在任意时刻翻译为Claripy的后端,例如符号整数和浮点数由z3提供,值集域由值集分析提供。
Claripy提供几种前端:
所有分析的入口点是Project,包括二进制文件和相关库。