基于QEMU的动态函数调用跟踪
文内图片:
图片说明: 使用而不是再重新翻译.而考虑到避免在控制代码和客户机代码之间因为经常跳转所带来的开销,QEMU又使用了块链接的机制,即翻译好代码块后就尝试将其与之前的翻译块链接起来,如果之前的翻译块与这个将要执行的翻译块的客户机代码不跨内存分页的话,则在它们之间建立直接跳转,形成链表,这样大部分的跳转是在翻译块之间进行的,它们处于同一个运行时上下文,因此没有返回QEMU代码时所需的切换上下文等复杂的操作[10],如图1所示:Fig.1QEMUblockchaining图1QEMU块链接示意图QEMU的运行流程是启动后从客户机的第1条代码开始,首先查看客户机当前的指令指针(programcounter,PC)对应的翻译块是否在翻译缓存中,如果没有的话则进行翻译,并加入翻译缓存后再执行;否则直接执行缓存好的代码,如此循环,如图2所示:Fig.2QEMUexecutionflowchart图2QEMU运行流程图本文要解决的核心问题是:如何在多种平台下如x86和ARM中动态地获取函数调用与返回的信息,生成函数调用关系数据,保证完整和全面;同时考虑到性能,提高执行速度,减少模拟速度慢导致的软件运行异常.1.2设计思路如1.1节所述,QEMU模拟器使用动态二进制翻译技术,,所有指令在执行前都会被翻译,所以可以通过在翻译时识别函数调用和返回指令,对代码块进行标记.在执行这些块之前使用QEMU提供的API获取如时间、读取客户机内存中的进程标识、线程标志等信息,利用QEMU已有的输出日志功能保存到文件中.其中需要额外注意的是信息的完整和全面性问
文内图片:
图片说明: 因此没有返回QEMU代码时所需的切换上下文等复杂的操作[10],如图1所示:Fig.1QEMUblockchaining图1QEMU块链接示意图QEMU的运行流程是启动后从客户机的第1条代码开始,首先查看客户机当前的指令指针(programcounter,PC)对应的翻译块是否在翻译缓存中,如果没有的话则进行翻译,并加入翻译缓存后再执行;否则直接执行缓存好的代码,如此循环,如图2所示:Fig.2QEMUexecutionflowchart图2QEMU运行流程图本文要解决的核心问题是:如何在多种平台下如x86和ARM中动态地获取函数调用与返回的信息,生成函数调用关系数据,保证完整和全面;同时考虑到性能,提高执行速度,减少模拟速度慢导致的软件运行异常.1.2设计思路如1.1节所述,QEMU模拟器使用动态二进制翻译技术,所有指令在执行前都会被翻译,所以可以通过在翻译时识别函数调用和返回指令,对代码块进行标记.在执行这些块之前使用QEMU提供的API获取如时间、读取客户机内存中的进程标识、线程标志等信息,利用QEMU已有的输出日志功能保存到文件中.其中需要额外注意的是信息的完整和全面性问题,QEMU原本的块链接机制会造成其中的一些函数调用由于没有返回到主控代码中而无法输出到日志中,因此需要禁用块链接,每次执行翻译块之后都会返回控制代码中检查是否发生了函数调用或返回,保证能够获取到所有的函数调用关系.Fig.3Dynamicfunctioncalltracingarchitecturedesign图3动态函数调用跟踪的
【作者单位】: 清华大学计算机科学与技术系;北京理工大学计算机学院;
【基金】:“核高基”国家科技重大专项基金项目(2012ZX01039-004-41,2012ZX01039-003)~~
【分类号】:TP316.81
【参考文献】
相关期刊论文 前2条
1 贾荻;向勇;孙卫真;曹睿东;;基于数据库的在线函数调用图工具[J];小型微型计算机系统;2016年03期
2 刘雨辰;王佳;陈云霁;焦帅;;计算机系统模拟器研究综述[J];计算机研究与发展;2015年01期
【共引文献】
相关期刊论文 前3条
1 向勇;曹睿东;毛英明;;基于QEMU的动态函数调用跟踪[J];计算机研究与发展;2017年07期
2 金涛;刘淑芬;齐红;;无人艇保卫目标的仿真技术[J];吉林大学学报(理学版);2017年01期
3 曹立勇;姚程宽;卢灿举;光峰;张新华;;硬件模拟器对仿真加速的测试平台研究[J];西昌学院学报(自然科学版);2016年02期
【二级参考文献】
相关期刊论文 前9条
1 向勇;汤卫东;杜香燕;孙卫真;;基于内核跟踪的动态函数调用图生成方法[J];计算机应用研究;2015年04期
2 孙卫真;杜香燕;向勇;汤卫东;侯鸿儒;;基于RTL的函数调用图生成工具CG-RTL[J];小型微型计算机系统;2014年03期
3 方锦清;;大数据浪潮冲击下网络科学与工程面临的挑战与机遇[J];自然杂志;2013年05期
4 仰燕兰;叶桦;费树岷;;车辆定位监控系统数据库的设计与优化[J];东南大学学报(自然科学版);2010年S1期
5 孟祥福;马宗民;严丽;张霄雁;;一种基于知识的关系数据库模糊查询方法[J];东北大学学报(自然科学版);2009年03期
6 陈伟清;刘彦花;;城市规划多源数据整合与数据库建设[J];广西大学学报(自然科学版);2009年01期
7 刘如九;张振山;柴天佑;;一种通用的多数据库间数据抽取方法及应用[J];北京交通大学学报;2008年04期
8 孟祥福;马宗民;严丽;;数据库模糊查询结果自动排序方法[J];东北大学学报(自然科学版);2008年07期
9 李越,钱德沛;基于NS的分布式并行网络模拟器[J];电子学报;2004年02期
【相似文献】
相关期刊论文 前10条
1 王咏武;远程函数调用的原理与实现步骤[J];中国金融电脑;2001年09期
2 李玉斌;API函数在Visual Basic中的应用[J];电子科技;2005年03期
3 刘志芳;杜瑞庆;;浅谈C语言中函数入门的讲解[J];中国科技信息;2007年13期
4 张锋;;浅谈C++中的虚函数[J];湖南工业职业技术学院学报;2008年01期
5 李艳芳;;C语言函数的教学探讨[J];湖南科技学院学报;2009年12期
6 潘莉;;C语言函数教学探讨[J];科技信息;2011年10期
7 黎路;;C语言函数教学探析[J];福建电脑;2011年11期
8 郑丽英;C~(++)的多态机制及虚函数实现技术[J];甘肃工业大学学报;1995年02期
9 郭招娣;API函数在VB中的应用[J];计算机应用与软件;2003年09期
10 石小云;C语言函数疑难问题探索[J];株洲师范高等专科学校学报;2004年02期
相关会议论文 前1条
1 潘新红;李庆忠;;用结构化函数内联方法处理结构上递归的NewsML查询[A];全国第十五届计算机科学与技术应用学术会议论文集[C];2003年
相关重要报纸文章 前5条
1 北京信息工程学院 张泽虹;C函数编程技巧[N];中国电脑教育报;2006年
2 孙顾天 笨笨;深入理解函数和过程的精髓[N];电脑报;2008年
3 郑州 牛霜霞;用MFC编制Windows打印程序[N];中国计算机报;2000年
4 广东 林志航;PB调用API函数技巧三则[N];电脑报;2001年
5 航天部二院 陈峰;OpenGL中文本的显示[N];计算机世界;2000年
相关硕士学位论文 前10条
1 刘阳;函数抽取重构的检测与分析[D];北京理工大学;2015年
2 谭慧;内核函数执行时间和路径的分析展现[D];北京理工大学;2014年
3 缪小川;基于敏感路径识别的安卓应用安全性分析方法[D];南京大学;2016年
4 杨羡环;基于函数调用序列的漏洞定位方法研究[D];华中科技大学;2013年
5 杜香燕;支持路由协议分析的内核函数调用图工具设计[D];首都师范大学;2014年
6 汤卫东;动态函数调用分析及其在内核模块逆向工程的应用[D];清华大学;2014年
7 赵丹;基于静态类型分析的Java程序函数调用图构建方法研究[D];湖南大学;2006年
8 刘星;基于函数调用图的恶意代码同源分析[D];国防科学技术大学;2012年
9 黄双玲;面向C/C++程序函数调用关系的静态分析方法研究[D];中国科学技术大学;2015年
10 张苗;进化测试中嵌套If-Else和函数调用结构的适值函数设计[D];西安电子科技大学;2008年
本文编号:2513149
本文链接:https://www.wllwen.com/kejilunwen/ruanjiangongchenglunwen/2513149.html