本节书摘来自华章计算机《编译与反编译技术实战》一书中的第1章,第1.9节,作者 刘晓楠 陶红伟 岳峰 戴超,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1.9 动态分析工具TEMU
TEMU是动态分析工具BitBlaze的一个组件,是一个基于系统仿真器QEMU开发的动态二进制分析工具,以QEMU为基础运行一个完整的系统(包括操作系统和应用程序),并对二进制代码的执行进行跟踪和分析。
TEMU提供以下功能:
1)动态污点分析。TEMU能够对整个系统进行动态污点分析,把一些信息标记为污点(如键盘事件、网络输入、内存读写、函数调用、指令等),并在系统内进行污点传播。这个特性可为符号执行提供插件形式的工具。许多分析都需要对二进制代码进行细粒度的分析,而基于QEMU的全系统模拟器确保了细粒度的分析。
2)获取操作系统视图。操作系统中提取的信息如进程和文件对很多分析都是很重要的。TEMU可以使用这些信息决定当前执行的是哪个进程和模块、调用的API和参数,以及文件的存取位置。全系统的视图使我们能够分析操作系统内核以及多个进程间的交互,而许多其他的二进制分析工具(如Valgrind、DynamoRIO、Pin)只提供了一个局部的视图(如单个进程的信息)。这对于分析恶意代码更为重要,因为许多攻击涉及多个进程,而且诸如rootkits的内核攻击变得越来越普遍。
3)深度行为分析。TEMU能够分析二进制文件和操作环境的交互,如API调用序列、边界内存位置的访问。通过标记输入为污点,TEMU能够进行输入和输出之间的关系分析。并且,全系统仿真器有效地隔离了分析组件和待分析代码。因此,待分析代码更难干扰分析结果。
TEMU由C和C++实现。性能要求高的代码由C实现,而面向分析的代码由C++编写,以便很好地利用C++ STL中的抽象数据类型和类型检查。