[发明专利]一种基于API安全属性隐藏与攻击威胁监控的软件保护方法有效
申请号: | 201510997890.2 | 申请日: | 2015-12-28 |
公开(公告)号: | CN105653905B | 公开(公告)日: | 2018-07-24 |
发明(设计)人: | 汤战勇;郝朝辉;房鼎益;龚晓庆;陈峰;陈晓江;叶贵鑫;张洁;张恒 | 申请(专利权)人: | 西北大学 |
主分类号: | G06F21/12 | 分类号: | G06F21/12;G06F21/14 |
代理公司: | 西安恒泰知识产权代理事务所 61216 | 代理人: | 李婷 |
地址: | 710069 *** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 api 安全 属性 隐藏 攻击 威胁 监控 软件 保护 方法 | ||
1.一种基于API安全属性隐藏与攻击威胁监控的软件保护方法,其特征在于,包括以下步骤:
步骤一,从待保护的PE文件的输入表中提取DLL文件信息,将DLL文件信息记录在一个输入信息记录表imp_tab中;
步骤二,提取PE文件的执行控制流图CFG;
步骤三,提取API调用点,得到调用点集合cs_set;
步骤四,提取API传参代码块;
步骤五,提取API返回值解密点;
步骤六,转储输入信息记录表imp_tab中的DLL文件信息至新的地址空间,计算转储后新的API入口地址;
步骤七,构造跳板函数块SpringBlock,以正确指导步骤六转储的API从旧地址到新地址的寻址;
步骤八,在返回值解密点插入异常指令,以保证保护后的PE文件在执行过程中,遇到异常指令时,程序转入预先设置的返回值解密处理函数中;
步骤九,构造能检测软件执行过程中所面临威胁的节点,生成节点库;首先,使用<威胁目的,实施方式,作用对象>的描述方式对这其中威胁进行细致划分和形式化表示;其次,提取威胁特征,考虑时可以结合三个因素:①威胁的实施方式,②威胁的作用对象,③威胁造成的影响;最后,根据特征构造检测此威胁的代码片,及检测结点;
步骤十,部署节点网,构造节点网通信的数据结构;
步骤十一,构造返回值解密处理函数;
步骤十二,对PE文件进行重构
计算保护方案各个部分的总大小为size,申请size大小的由Pbase指向的存储空间,将所述各个部分保存到该空间内;创建一个PE新节,将Pbase处的大小为size的内容复制到该新节里,保存修改后的PE文件。
2.如权利要求1所述的基于API安全属性隐藏与攻击威胁监控的软件保护方法,其特征在于,所述的步骤三的具体过程包括:
步骤S30,提取Intel X86指令集中调用API的指令格式模板template_call;
步骤S31,在PE文件结构中,找到代码区段的起始地址start和该区段的大小,计算代码区段的结束地址end;
步骤S32,反汇编start至end之间的二进制数据得到汇编指令,并按照汇编指令的地址顺序组成一个汇编指令序列,记为ins_list;
步骤S33,在汇编指令序列ins_list中,从start开始逐条取指令,依次判断所取指令所对应的二进制数据是否与template_call的指令格式匹配,如匹配,则将该条指令地址csi和该条指令insi存储到调用点集合cs_set中,其中i为自然数;否则,继续查看下一条指令,直至到达end处。
3.如权利要求2所述的基于API安全属性隐藏与攻击威胁监控的软件保护方法,其特征在于,所述的步骤四的具体过程包括:
步骤S40,根据步骤一得到的输入信息记录表imp_tab,逐一解析每一个API的参数个数和参数的数据类型;
步骤S41,从调用点集合cs_set中的第一条记录<cs1,ins1>开始,逐条确定每一个API调用指令insi所在的基本块bj;
步骤S42,确定每一个API调用点地址csi所在基本块bj的直接前驱基本块集合presetj,j为自然数;
步骤S43,对于cs_set中的每一条API调用指令,从它的API调用点地址csi开始,按照指令地址递减的顺序,查找传参功能的代码块,直至该API的所有参数传递完毕或对应查找的代码块集合遍历结束时退出,标记所找到的传参代码块为OPCi=<headi,taili>;按照同样的方法,处理其他的API调用指令,直至遍历完整个cs_set。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西北大学,未经西北大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510997890.2/1.html,转载请声明来源钻瓜专利网。