[发明专利]基于向量化异常处理的软件保护方法有效
申请号: | 201911402482.2 | 申请日: | 2019-12-31 |
公开(公告)号: | CN111222103B | 公开(公告)日: | 2022-03-18 |
发明(设计)人: | 赵康;范渊 | 申请(专利权)人: | 杭州安恒信息技术股份有限公司 |
主分类号: | G06F21/12 | 分类号: | G06F21/12;G06F8/72;G06F21/60 |
代理公司: | 杭州中成专利事务所有限公司 33212 | 代理人: | 金祺;周世骏 |
地址: | 310051 浙江省*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 量化 异常 处理 软件 保护 方法 | ||
1.基于向量化异常处理的软件保护方法,其特征在于:包括以下步骤:
一、对可执行文件进行加壳;
包括以下步骤:
1)、分析原始可执行文件,得到需要处理的数据;执行步骤2;
2)、根据步骤1得到的需要处理的数据,生成新的可执行文件头部;
3)、修改步骤2得到的新的可执行文件头部的第一个节表项,生成用于映射原始可执行文件的节;
4)、根据原始可执行文件构成加解密函数代码;
5)、生成向量化异常处理过程代码;
6)、生成可执行文件装载过程代码,
7)、生成壳代码节;壳代码节包括三部分代码:可执行文件装载过程代码、向量化异常处理过程代码和加解密函数代码;
8)、加密原始可执行文件,得到原始可执行文件加密数据;
9)、根据步骤5加密的可执行文件得到密钥表;
10)、根据壳代码生成导入函数地址表;
11)、根据导入函数地址表、密钥表和原始可执行文件加密数据,生成壳数据节;
12)、将步骤2得到的新的可执行文件头部、步骤3得到的用于映射原始可执行文件的节、步骤7得到壳代码节、步骤11得到的壳数据节组合成为新的可执行文件;
13)、根据各个节的实际大小和地址修正新的可执行文件头部的内存映像大小值和节表内容;
二、装载可执行文件;
包括以下步骤:
2.1)、解密最终的可执行文件中的原始可执行文件加密数据的头部,覆盖当前可执行文件的头部;
2.2)、解密最终的可执行文件中的原始可执行文件加密数据的导入函数地址表,保存到映射目标代码节的相应位置;
2.3)、遍历导入函数地址表,加载需要的动态链接库,填充函数地址;
2.4)、如果原始可执行文件包含异常处理表,则解密该表到相应位置;
2.5)、如果原始可执行文件包含线程局部存储TLS表,则解密该表到相应位置;
2.6)、如果原始可执行文件包含重定位表,则解密该表到相应位置;
2.7)、向系统注册向量化异常处理过程;
2.8)、将映射原始可执行文件节的内存保护属性设置为不可访问;
2.9)、如果步骤2.4解密了异常处理表,则将异常处理表添加到系统的动态函数表中;
2.10)、如果步骤2.5步解密了线程局部存储TLS表,则调用TLS回调函数;
2.11)、程序跳转到原始可执行文件的入口地址;
三、如果出现向量化异常,进行向量化异常处理;
包括以下步骤:
3.1)、异常处理过程计算异常地址对应的内存页基地址;
3.2)、将该内存基地址加入一个由全局互斥锁保护的地址列表,使得异常处理函数此时独占该页的处理;
3.3)、对于多线程程序,此时可能有其他线程在相同的地址触发异常;则由全局互斥锁进行同步,其他线程将等待当前异常处理完成后再处理;
3.4)、设置异常内存页保护属性为可读可写,使得异常处理过程可以修改页的内容;
3.5)、对于多线程程序,如果触发异常的是数据访问指令,设置内存保护属性为可读可写不能阻止其他线程访问正在被修改的页,因此必须暂停其他线程的运行;
3.6)、如果该地址是首次发生异常,将步骤8得到的原始可执行文件的加密数据解密到该页;否则说明该页已经有加密的内容,则将该页内容原地解密;
3.7)、对于动态链接库和启用了地址空间随机化的进程,首次解密的代码需要处理重定位;根据重定位表修正解密后的代码;
3.8)、对于首次解密的未初始化数据,用零值进行初始化;
3.9)、根据该页对应的节属性,设置相应的页保护属性;比如对于数据段,设置为可读可写;对于代码段,设置为可读可执行;
3.10)、将该页地址加入已解密地址列表;
3.11)、从全局互斥锁中去除页基地址,取消对该页的独占;
3.12)、如果发生的异常是指令执行异常,且异常的地址临近内存页的下边界,具体来说就是小于该异常指令的长度,那么必须将下一页也解密;即把下一页起始地址当作异常的地址,回到步骤3.4继续处理;
3.13)、如果在步骤3.5暂停了其他线程运行,此时恢复那些线程运行;
3.14)、完成异常处理,程序返回原地址继续执行。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州安恒信息技术股份有限公司,未经杭州安恒信息技术股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911402482.2/1.html,转载请声明来源钻瓜专利网。