天天看点

《编译与反编译技术实战 》一1.9 动态分析工具TEMU

本节书摘来自华章出版社《编译与反编译技术实战 》一书中的第1章,第1.9节,庞建民 主编 ,刘晓楠 陶红伟 岳 峰 戴超 编著,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

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中的抽象数据类型和类型检查。

继续阅读