[发明专利]一种数据流跟踪方法有效
| 申请号: | 201310733715.3 | 申请日: | 2013-12-26 | 
| 公开(公告)号: | CN103714288A | 公开(公告)日: | 2014-04-09 | 
| 发明(设计)人: | 邹德清;金海;袁劲枫 | 申请(专利权)人: | 华中科技大学 | 
| 主分类号: | G06F21/52 | 分类号: | G06F21/52 | 
| 代理公司: | 华中科技大学专利中心 42201 | 代理人: | 朱仁玲 | 
| 地址: | 430074 湖北*** | 国省代码: | 湖北;42 | 
| 权利要求书: | 查看更多 | 说明书: | 查看更多 | 
| 摘要: | |||
| 搜索关键词: | 一种 数据流 跟踪 方法 | ||
1.一种数据流跟踪方法,其特征在于,该方法基于模拟器进行数据流跟踪的优化,包括对客户操作系统指令进行反汇编的阶段、编译产生宿主机执行代码的阶段和最终代码执行的阶段,其中:
在对客户操作系统指令进行反汇编的阶段,模拟器对客户操作系统指令进行反汇编的同时产生污点指令,污点指令为特定的编码形式,固定大小为4个字节,包括操作码(opcode)、源操作数、目的操作数以及ArgLogPos字段;
在编译产生宿主机执行代码的阶段,对之前产生的污点指令进行编译产生宿主机上运行的指令,每一个污点指令对应于一个处理函数,用于执行该污点指令代表的污点更新操作;
在最终代码执行阶段,开启新的线程执行污点指令,进行污点跟踪的操作,执行的过程就是逐条取出污点指令并调用污点指令处理函数。
2.根据权利要求1所述的数据流跟踪方法,其特征在于,在所述客户操作系统指令进行反汇编的阶段,具体进行如下操作:
(1-1)取出客户操作系统的一条指令进行反汇编;
(1-2)判断当前客户操作系统的指令是否会产生污点传播;如果不会产生污点传播,则转入步骤(1-6);
(1-3)判断当前客户操作系统的指令是否包括内存操作数,即是否需要动态获取内存操作数的地址;如果没有包括内存操作数,则转入步骤(5);
(1-4)在ArgLog共享缓存中分配一块空间,用于后面保存动态获取的内存操作数地址,将该空间在ArgLog中的地址写入污点指令的ArgLogPos字段中;
(1-5)分析客户操作系统的指令,编码污点指令的opcode,源操作数和目的操作数字段;
(1-6)判断当前客户操作是否还有指令需要进行翻译;如果还有指令需要进行翻译,则转入步骤(1-1)。
3.根据权利要求1或2所述的数据流跟踪方法,其特征在于,在编译产生宿主机执行代码的阶段,具体进行如下操作:
(2-1)从第一阶段生成的污点指令缓存中取出一条污点指令;
(2-2)判断当前污点指令是否存在处理函数;如果已经存在处理函数,则转入步骤(2-6);
(2-3)判断当前污点指令是否需要动态获取内存操作数地址;如果不需要,则转入步骤(2-5);
(2-4)通知模拟器后端编译TCG模块,在运行过程中动态获取需要的内存操作数地址写入ArgLog指定的共享内存中;
(2-5)在处理函数代码缓存中为污点指令编译对应的处理函数;
(2-6)判断是否还有污点指令需要进行处理;如果有,则转入步骤(2-1)。
4.根据权利要求1至3任一项所述的数据流跟踪方法,其特征在于,在编译产生宿主机执行代码的阶段,具体进行如下操作:
(3-1)创建新的线程,调用污点跟踪执行函数去执行污点跟踪指令;
(3-2)线程在执行过程中,从污点指令缓存中取出一条污点指令,已污点指令为下标在处理函数缓存中寻址到对应的处理函数并调用执行;
(3-3)判断当前污点指令需要的内存操作数地址是否已经在ArgLog缓存中;如果已经写入,则转入步骤(3-5);
(3-4)等待模拟器执行主线程将动态获取的内存操作数地址写入ArgLog缓存中;
(3-5)判断污点指令是否执行完毕;如果没有执行完毕,则转入步骤(3-2);
(3-6)撤销线程。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华中科技大学,未经华中科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310733715.3/1.html,转载请声明来源钻瓜专利网。





