【技术实现步骤摘要】
基于向量化异常处理的软件保护方法
本专利技术涉及一种软件保护方法,具体涉及一种基于向量化异常处理的软件保护方法。
技术介绍
使用一般的加壳方法保护软件时,为了确保原始程序正常运行,总是将所有可执行文件数据作为一个整体处理。要么完全加密,要么完全解密。这是由于程序内部各个功能代码相互调用、访问数据的时机和位置是不确定的。壳代码在把程序控制权交还给原始程序前,必须把原始程序全部解密,这就给脱壳造成一个良好的介入时机。本专利技术通过向量化异常处理机制,控制程序运行的整个过程。异常处理代码在原始程序的每个内存页被执行或者访问数据时得到控制权,适时的加解密相关数据,避免了对原始程序整体解密。这样一来,在任何时刻通过进程内存转储得到的内存数据,绝大部分都是加密的。在各种软件保护方法中有一类保护方法是对可执行文件进行加壳处理。加壳后的可执行文件代码主体被变形、压缩或者加密,并在程序代码的开头增加了一段代码(即壳代码)。当软件运行时首先执行的是壳代码。壳代码经过一段较复杂的解密过程还原代码主体,然后跳转并执行真正的功能代码。这种软件保护方法存在一个缺陷,即对代码的保护只在软件运行的初期。当软件的外壳程序运行完成后,原始代码就完全暴露在内存中。此时通过进程内存转储加上可执行文件映像修复等技术手段即可获得不受保护的软件代码。去除保护的过程即通称的脱壳。绝大多数软件限于编译器和CPU架构的规范约束,程序入口点的代码都具有一定的特征。这种特征可用于判别被加壳的软件是否运行到了原始的代码。一般的加壳方法往往存在 ...
【技术保护点】
1.基于向量化异常处理的软件保护方法,其特征在于:包括以下步骤:/n一、对可执行文件进行加壳;/n二、装载可执行文件;/n三、如果出现向量化异常,进行向量化异常处理。/n
【技术特征摘要】
1.基于向量化异常处理的软件保护方法,其特征在于:包括以下步骤:
一、对可执行文件进行加壳;
二、装载可执行文件;
三、如果出现向量化异常,进行向量化异常处理。
2.根据权利要求1所述的基于向量化异常处理的软件保护方法,其特征在于:
步骤一包括以下步骤:
1)、分析原始可执行文件,得到需要处理的数据;执行步骤2;
2)、根据步骤1得到的需要处理的数据,生成新的可执行文件头部;
3)、修改步骤2得到的新的可执行文件头部的第一个节表项,生成用于映射原始可执行文件的节;
4)、根据原始可执行文件构成加解密函数代码;
5)、生成向量化异常处理过程代码;
6)、生成可执行文件装载过程代码,
7)、生成壳代码节;壳代码节包括三部分代码:可执行文件装载过程代码、向量化异常处理过程代码和加解密函数代码;
8)、加密原始可执行文件,得到原始可执行文件加密数据;
9)、根据步骤5加密的可执行文件得到密钥表;
10)、根据壳代码生成导入函数地址表;
11)、根据导入函数地址表、密钥表和原始可执行文件加密数据,生成壳数据节;
12)、将步骤2得到的新的可执行文件头部、步骤3得到的用于映射原始可执行文件的节、步骤7得到壳代码节、步骤11得到的壳数据节组合成为新的可执行文件;
13)、根据各个节的实际大小和地址修正新的可执行文件头部的内存映像大小值和节表内容。
3.根据权利要求2所述的基于向量化异常处理的软件保护方法,其特征在于:
步骤二包括:
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)、程序跳转到原始可执行文件的入口地址。
4.根据权利要求3所述的基于向量化异常处理的软件保护方法,其特征在于:
步骤三包括:
3.1)、异常处理过程计算异常地址对应的内存页基地址;
3.2)、将该内存基地址加入一个由全局互斥锁保护的地址列表,使得异常处理函数此时独...
【专利技术属性】
技术研发人员:赵康,范渊,
申请(专利权)人:杭州安恒信息技术股份有限公司,
类型:发明
国别省市:浙江;33
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。