[发明专利]一种基于函数置乱的ROP防御方法与装置在审
申请号: | 201610109276.2 | 申请日: | 2016-02-26 |
公开(公告)号: | CN105787368A | 公开(公告)日: | 2016-07-20 |
发明(设计)人: | 傅建明;张旭;林艳 | 申请(专利权)人: | 武汉大学 |
主分类号: | G06F21/56 | 分类号: | G06F21/56;G06F21/57 |
代理公司: | 武汉科皓知识产权代理事务所(特殊普通合伙) 42222 | 代理人: | 魏波 |
地址: | 430072 湖*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 函数 rop 防御 方法 装置 | ||
1.一种基于函数置乱的ROP防御方法,其特征在于,包括以下步骤:
步骤1:待随机化保护的二进制可执行程序作为输入,对二进制可执行程序 的文件格式进行解析;
步骤2:将解析出的代码段二进制数据进行反汇编处理;
步骤3:并在步骤1、步骤2的基础上,提取敏感数据;
步骤4:通过解析符号表,准确地识别出所有的函数起始地址和结束地址;
步骤5:对代码段中的函数进行置乱处理,以及在置乱后的函数间进行空指 令的随机填充,并对置乱后的二进制可执行程序进行偏移修正处理;
步骤6:输出函数随机化后的二进制可执行文件。
2.根据权利要求1所述的基于函数置乱的ROP防御方法,其特征在于:步 骤1中所述的对二进制可执行程序的文件格式进行解析,主要包括文件头、程序 头、节头、符号表、动态链接符号表。
3.根据权利要求1所述的基于函数置乱的ROP防御方法,其特征在于:步 骤3中所述的敏感数据为能够被攻击者利用来推测目标内存布局或者控制目标 程序执行流的数据,通过分析目前流行的攻击手法并结合函数置乱需求,给出敏 感数据的范畴,主要包括:跳转表、虚表、全局函数指针。
4.根据权利要求3所述的基于函数置乱的ROP防御方法,其特征在于: 所述跳转表跳转的指令类型符合特征:
movreg,qwordptr[reg*8+offset];
其中offset为跳转表基址,即只要出现该类型的指令,表明在进行跳转表的 分支寻址操作,因此通过识别上述类型的指令即可识别出跳转表,然后提取跳转 表中的所有分支地址。
5.根据权利要求3所述的基于函数置乱的ROP防御方法,其特征在于: 指向虚表首地址的虚表指针,初始化指令类型符合以下特征:
movmem,off_vtable;
其中off_vtable是一个立即数,且该立即数的值即为虚表首地址;因此通过 识别上述类型的指令识别出虚表,然后提取出虚表中的所有虚函数地址。
6.根据权利要求3所述的基于函数置乱的ROP防御方法,其特征在于: 在“.preini_array”、“.init_array”、“.fini_array”这些节中存储了程序初始化和结束 时的执行的一系列函数指针,因此,通过扫描上述节区,提取全局函数指针。
7.根据权利要求1所述的基于函数置乱的ROP防御方法,其特征在于: 步骤5中所述对代码段中的函数进行置乱处理,其实现过程是首先在函数识别的 基础上,将代码段中的二进制数据以函数为单位进行分割;然后设置随机置乱因 子Key,包括时间戳、软硬件编码、随机数;最后将分割的代码段函数和随机置 乱因子Key作为函数置乱模块的输入,进行随机置乱,并根据置乱后的函数顺 序组合成新的代码段,为了保证代码段的整体大小不变,利用空指令在置乱后的 函数间或者代码段尾部进行随机填充。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉大学,未经武汉大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610109276.2/1.html,转载请声明来源钻瓜专利网。