基于QEMU的动态函数调用跟踪
2017-08-12曹睿东毛英明
计算机研究与发展 2017年7期
向 勇 曹睿东 毛英明
1(清华大学计算机科学与技术系 北京 100084)2 (北京理工大学计算机学院 北京 100081)
基于QEMU的动态函数调用跟踪
向 勇1曹睿东1毛英明2
1(清华大学计算机科学与技术系 北京 100084)2(北京理工大学计算机学院 北京 100081)
(xyong@csnet4.cs.tsinghua.edu.cn)
函数调用一直是Linux内核分析研究领域的重点.获得函数调用信息主要有2种方法:静态分析和动态分析.动态跟踪方法可实时和准确地获取函数调用关系信息,在分析和调试软件程序时有极大的帮助作用.针对现有工具存在跟踪信息不全面、需要编译选项支持等不足,基于开源的QEMU模拟器,设计并实现了支持多种CPU平台的通用动态函数调用跟踪工具,可在x86_32,x86_64,ARM共3种体系架构上动态跟踪包括Linux内核启动过程在内的函数调用和返回信息.该工具在程序运行时截获调用和返回的指令,并记录相关信息,利用此种指令只会在QEMU翻译块的最后一条出现的性质,减少检查指令的数量,提高运行效率;可不依赖源代码,只依据函数符号表进行函数调用关系分析.实验结果表明:跟踪和分析结果与源代码行为一致,相比于S2E提升了分析性能和支持的CPU平台种类,且能更好地扩展至其他平台.
函数调用;动态跟踪;模拟器;多平台;Linux内核分析
软件由众多函数组织而成,以Linux内核代码为例,已包含了3万多个函数.研究和梳理函数之间的调用关系对软件的开发和测试有极大的帮助,可以为提高程序执行效率提供必要的支持[1],在软件性能研究等方面也……
登录APP查看全文
