[发明专利]基于虚函数表劫持的防御方法在审
申请号: | 201610202853.2 | 申请日: | 2016-04-01 |
公开(公告)号: | CN105868641A | 公开(公告)日: | 2016-08-17 |
发明(设计)人: | 胡昌振;单纯;王子祥;马锐;胡晶晶 | 申请(专利权)人: | 北京理工大学 |
主分类号: | G06F21/57 | 分类号: | G06F21/57 |
代理公司: | 北京理工大学专利中心 11120 | 代理人: | 高燕燕 |
地址: | 100081 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明提供一种基于虚函数表劫持的防御方法,可以在二进制可执行文件中决策出潜在的use‑after‑free类型漏洞的利用和进一步攻击。步骤一、使用静态指令分片和提取框架,将一个可执行文件作为输入反汇编并生成控制流图和汇编语言;步骤二、将步骤一得到的汇编语言压缩简化;步骤三、vEXTRACTOR在步骤二得到的中间语言上执行向后的程序切片;步骤四、由前三步提取所有满足虚函数调度的低级的语义,取出虚函数调度部分;步骤五、重写和配备ID;步骤六、将虚函数表的所有引用参数修改为vtables的新地址,VRewriter为每个虚拟功能的调度装备上安全检查来验证目标虚表的完整性;步骤七、将该装配了安全检查的执行代码放入一个新的代码段,保证大部分的原代码部完好无损。 | ||
搜索关键词: | 基于 函数 劫持 防御 方法 | ||
【主权项】:
一种基于虚函数表劫持的防御方法,其特征在于,包括以下步骤:步骤一、使用静态指令分片和提取框架vEXTRACTOR,将一个可执行文件作为输入,保护阶段在虚函数调用前,它的vtable载入指令时,反汇编并生成控制流图和汇编语言;步骤二、将步骤一得到的汇编语言压缩简化,即将反汇编出的语言转换成中间语言,压缩简化复杂指令集为精简指令集的语法,同时保留原有代码的语义和CFG图不改变;步骤三、vEXTRACTOR在步骤二得到的中间语言上执行向后的程序切片,其中所有间接调用指令的地址提取出来并且把它定义为切片的标准,从而决定该间接指令是否是虚函数调用;步骤四、由前三步提取所有满足虚函数调度的低级的语义,取出虚函数调度部分;至此完成对二进制文件的逆向分析,提取出虚函数调度过程中的相关的数据指令;步骤五、重写和配备ID,首先创建一个只读区域,然后根据前四步识别出的虚函数调度语义,将所有虚函数表移入这个区域,装备标识在这个区域的虚函数表;步骤六、将虚函数表的所有引用参数修改为vtables的新地址,VRewriter为每个虚拟功能的调度装备上安全检查来验证目标虚表的完整性,即是否是只读的,并且包含了一个正确的ID;步骤七、将该装配了安全检查的执行代码放入一个新的代码段,保证大部分的原代码部完好无损。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京理工大学,未经北京理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201610202853.2/,转载请声明来源钻瓜专利网。