[发明专利]基于块对目标代码扫描并替换敏感指令的方法无效

专利信息
申请号: 200910043831.6 申请日: 2009-07-03
公开(公告)号: CN101630269A 公开(公告)日: 2010-01-20
发明(设计)人: 张卫华;刘晓建;易晓东;谭郁松;吴庆波;戴华东;孔金珠 申请(专利权)人: 中国人民解放军国防科学技术大学
主分类号: G06F9/455 分类号: G06F9/455;G06F17/30
代理公司: 国防科技大学专利服务中心 代理人: 郭 敏
地址: 410073湖*** 国省代码: 湖南;43
权利要求书: 查看更多 说明书: 查看更多
摘要: 发明公开了一种基于块对目标代码扫描并替换敏感指令的方法,目的是提供一种当敏感指令长度小于JMP时,寻找包含该敏感指令且长度不小于JMP的最小目标代码块,并用JMP替换该最小目标代码块的方法。技术方案是对首个扫描入口地址进行动态扫描,主要包括对基本块起始边界进行基本块扫描,对待转换敏感指令队列中的敏感指令进行基于替换块的敏感指令本地替换;然后从首个扫描入口地址开始执行GOS内核代码,直至产生硬件中断或异常或执行间接控制转移指令的转换代码;将GOS中断或异常处理函数的入口地址或间接控制转移指令的目标地址设为首个扫描入口地址,然后循环执行动态扫描。采用本发明能够最大限度地避免使用INT0/INT3指令进行替换,有效提高BT虚拟化性能。
搜索关键词: 基于 目标 代码 扫描 替换 敏感 指令 方法
【主权项】:
1.一种基于块对目标代码扫描并替换敏感指令的方法,其特征在于包括以下步骤:步骤1.创建并初始化全局数据结构:1.1创建并初始化扫描信息位图页目录页:分配一个数据页作为扫描信息位图索引结构中的页目录页,并将页目录页中的页目录项全部初始化为0;扫描信息位图是指以位图形式实现的、用于保存GOS内核虚地址扫描状态及相关信息的数据结构;在扫描信息位图中,每条GOS虚地址的扫描信息由与该地址一一对应的扫描信息位元-简称位元描述,每个扫描信息位元由二个比特位组成:00表示该位元对应的虚地址未扫描或非指令首地址;01表示该位元对应的虚地址已扫描;10表示该位元对应的虚地址未扫描或非指令首地址且为基本块边界或控制转移指令目标地址;11表示该位元对应的虚地址已扫描且为基本块边界地址或控制转移指令目标地址;基本块是指以GOS起始执行地址、GOS中断处理函数首地址或控制转移指令目标地址为起始边界,以无条件控制转移指令或已扫描地址为结束边界的连续目标指令序列;扫描信息位图索引结构由扫描信息位图页目录页--简称页目录页、扫描信息位图页表页--简称页表页和扫描信息位图页--简称位图页组成,GOS内核虚地址划分为页目录索引、页表索引和页内偏移三个位段,页目录索引存放页表页的首地址,页表索引存放位图页的首地址,页内偏移存放内核虚地址对应的扫描信息位元在位图页中的偏移量;1.2初始化待扫描入口地址队列及已替换RB有效信息平衡二叉树:将待扫描入口地址队列及已替换RB有效信息平衡二叉树的头指针设为NULL;待扫描入口地址队列是指以线性链表形式实现的、保存动态扫描时发现的控制转移指令目标地址及其调用地址的数据结构,待扫描入口地址队列节点以目标地址为索引值,按地址大小按序排列;已替换RB有效信息平衡二叉树是指以平衡二叉树AVL形式实现的、保存被替换RB相关信息的数据结构,树中节点以被替换RB首地址为索引值,其它信息包括被替换RB的长度及其与对应TB中每条指令地址的对应关系;RB是替换块,指满足以下条件的最短连续目标指令序列:位于基本块内部,包括基本块自身;包含指定敏感指令且长度不小于JMP指令长度;不含所属基本块范围之内、本替换块范围之外任何控制转移指令的目标地址,本替换块首地址除外;TB是转换块,指替换块被替换之后,经由替换指令执行、包含虚拟化代码或安全检查代码且与原替换块具有等价执行语义的一组指令序列;1.3令全局变量M=JMP替换指令长度;步骤2.从GOS内核加载程序输入参数中获取GOS内核起始执行地址,记为首个扫描入口地址,然后对首个扫描入口地址进行动态扫描:2.1.采用扫描状态查询方法检查首个扫描入口地址的扫描状态:若已扫描,转步骤3;若未扫描,将首个扫描入口地址记为基本块起始边界,转2.2;2.2.对基本块起始边界进行基本块扫描,方法是:2.2.1初始化待转换敏感指令队列:将待转换敏感指令队列头指针设为NULL;待转换敏感指令队列是指以线性链表形式实现的、保存基本块扫描时发现的敏感指令地址及其相关信息的数据结构,待转换敏感指令队列节点以敏感指令地址为索引值,按地址大小按序排列;2.2.2将基本块起始地址设为待扫描地址;2.2.3对待扫描地址处指令进行译码,根据译码结果执行以下操作:2.2.3.1若为敏感指令或间接控制转移指令,则将该指令添加到待转换敏感指令队列,转2.2.4;2.2.3.2若为直接控制转移指令,则首先采用目标地址有效性检查方法检查该目标地址是否指向已替换RB内部:若指向已替换RB内部,则将直接控制转移指令添加到待转换敏感指令队列,然后转2.2.4;若不指向已替换RB内部,则采用扫描状态查询方法检查目标地址的扫描状态,若目标地址已扫描则转2.2.4,否则将目标地址添加到待扫描入口地址队列,转2.2.4;2.2.3.3若为普通指令,则转2.2.4;2.2.4根据译码结果记录被扫描指令的扫描状态,方法为:首先采用扫描信息位元索引方法得到被扫描指令首地址对应位元的实际位置,将该位元的低位设为1;然后采用扫描信息位元索引方法依次得到被扫描指令所有剩余字节对应位元的实际位置,将这些位元设为00;最后若被扫描指令为直接控制转移指令,则采用扫描信息位元索引方法得到该控制转移指令目标地址对应的位元的实际位置,并将该位元的高位设为1;2.2.5将被扫描指令地址加上该指令长度,得到下一条指令的首地址;2.2.6若被扫描指令为无条件控制转移指令或下一条指令首地址已扫描,则将下一条指令首地址设为基本块的结束边界,并将其扫描信息位元的高位设为1,表示该地址为基本块边界地址或控制转移指令目标地址,然后结束本次基本块扫描并转2.3;否则转2.2.7;2.2.7将下一条指令首地址设为待扫描地址,转2.2.3,继续进行基本块扫描;2.3对待转换敏感指令队列中的敏感指令进行基于替换块的敏感指令本地替换:2.3.1若待转换敏感指令队列为空,则停止替换,转步骤3;若待转换敏感指令队列不为空,从待转换敏感指令队列中取出最小的敏感指令地址,在基本块内寻找包含该敏感指令的替换块,寻找方法如下:2.3.1.1将该敏感指令自身设为当前RB;2.3.1.2若当前RB长度不小于M字节,则将当前RB设为待转换RB,转2.3.3;若当前RB长度小于M字节,尝试向低地址空间扩展相邻指令到当前RB,扩展方法如下:A1.若当前RB首地址为基本块起始边界,转2.3.1.3;否则向低地址空间扩展一条指令到当前RB,转B1;B1.若该低位为1的位元的高位为1,执行C1,否则转2.3.1.2;C1.检查待扫描入口地址队列,若发现以低位为1位元对应的虚地址为索引值的节点,则采用遍历扩展方法检查该节点的调用者队列,将所有位于基本块范围之内的调用者地址与当前RB之间的所有指令扩展到当前RB,转2.3.1.2;若未发现以低位为1位元对应的虚地址为索引值的节点,则转2.3.1.2;调用者队列是指以线性链表形式实现的、保存具有相同目标地址的控制转移指令地址的数据结构,调用者地址队列节点以控制转移指令地址为索引值,包含在待扫描入口地址队列的每个节点之中;2.3.1.3尝试向高地址空间扩展相邻指令到当前RB,扩展方法如下:A2.若当前RB结束边界为基本块的结束边界,转2.3.2,否则向高地址空间扩展一条基本块指令到当前RB;B2.若被扩展指令首地址对应的位元为10,转2.3.2;否则检查被扩展指令首地址对应位元的高位,若高位为1,转C2,若高位为0,转2.3.1.2;C2.检查待扫描入口地址队列,若发现以被扩展指令首地址为索引值的节点,则采用遍历扩展方法检查该节点的调用者队列,将所有位于基本块范围之内的调用者地址与当前RB之间的所有指令扩展到当前RB,转2.3.1.2,若未发现以被扩展指令首地址为索引值的节点,直接转2.3.1.2;2.3.2若当前RB长度小于M字节,则将敏感指令设为待转换RB;否则将当前RB设为待转换RB;2.3.3采用二进制翻译中的常规方法生成与待转换RB具有等价执行语义的转换代码块,记为TB;2.3.4若待转换RB的长度不小于M字节,则将该RB前M字节替换为JMP指令,目标地址为TB首地址,剩余字节用NOP指令填充,得到已替换RB;若待转换RB的长度小于M字节,则将该RB的首字节替换为INT3指令,剩余字节用NOP指令填充,得到已替换RB;2.3.5在已替换RB有效信息平衡二叉树中创建已替换RB的节点,该节点包括已替换RB的首地址、长度及其与TB指令之间的地址对应关系这些有效信息;2.3.6遍历待扫描敏感指令队列,删除所有以已替换RB中的敏感指令地址为索引值的节点,转2.3.1;2.4遍历待扫描入口地址队列,删除所有以已扫描入口地址为索引值的节点;2.5若待扫描入口地址队列为空,则结束本次动态扫描,转步骤3;否则从待扫描入口地址队列中取出最大未扫描入口地址,记为基本块起始边界,转2.2执行下一次基本块扫描;步骤3从首个扫描入口地址开始执行GOS内核代码,直至产生硬件中断或异常或执行间接控制转移指令的转换代码;步骤4.将GOS中断或异常处理函数的入口地址或间接控制转移指令的目标地址设为首个扫描入口地址,转2.1。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科学技术大学,未经中国人民解放军国防科学技术大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/patent/200910043831.6/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top