[发明专利]基于向量化异常处理的软件保护方法有效
申请号: | 201911402482.2 | 申请日: | 2019-12-31 |
公开(公告)号: | CN111222103B | 公开(公告)日: | 2022-03-18 |
发明(设计)人: | 赵康;范渊 | 申请(专利权)人: | 杭州安恒信息技术股份有限公司 |
主分类号: | G06F21/12 | 分类号: | G06F21/12;G06F8/72;G06F21/60 |
代理公司: | 杭州中成专利事务所有限公司 33212 | 代理人: | 金祺;周世骏 |
地址: | 310051 浙江省*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 量化 异常 处理 软件 保护 方法 | ||
本发明提供一种基于向量化异常处理的软件保护方法,包括以下步骤:一、对可执行文件进行加壳;二、装载可执行文件;三、如果出现向量化异常,进行向量化异常处理。本发明提出一种无需改变原始程序代码和内存位置就能对数据进行分块加解密的方法。通过修改内存保护属性,使得某一页内存不可访问,在程序跳转到该内存页内的地址,或者访问该内存页内的数据时产生异常。该方法使得壳代码既能控制程序执行也能控制数据访问,且不需要改变代码和数据的内存地址。
技术领域
本发明涉及一种软件保护方法,具体涉及一种基于向量化异常处理的软件保护方法。
背景技术
使用一般的加壳方法保护软件时,为了确保原始程序正常运行,总是将所有可执行文件数据作为一个整体处理。要么完全加密,要么完全解密。这是由于程序内部各个功能代码相互调用、访问数据的时机和位置是不确定的。壳代码在把程序控制权交还给原始程序前,必须把原始程序全部解密,这就给脱壳造成一个良好的介入时机。
本发明通过向量化异常处理机制,控制程序运行的整个过程。异常处理代码在原始程序的每个内存页被执行或者访问数据时得到控制权,适时的加解密相关数据,避免了对原始程序整体解密。这样一来,在任何时刻通过进程内存转储得到的内存数据,绝大部分都是加密的。
在各种软件保护方法中有一类保护方法是对可执行文件进行加壳处理。加壳后的可执行文件代码主体被变形、压缩或者加密,并在程序代码的开头增加了一段代码(即壳代码)。当软件运行时首先执行的是壳代码。壳代码经过一段较复杂的解密过程还原代码主体,然后跳转并执行真正的功能代码。
这种软件保护方法存在一个缺陷,即对代码的保护只在软件运行的初期。当软件的外壳程序运行完成后,原始代码就完全暴露在内存中。此时通过进程内存转储加上可执行文件映像修复等技术手段即可获得不受保护的软件代码。去除保护的过程即通称的脱壳。
绝大多数软件限于编译器和CPU架构的规范约束,程序入口点的代码都具有一定的特征。这种特征可用于判别被加壳的软件是否运行到了原始的代码。一般的加壳方法往往存在对应的脱壳工具,可以自动化的对各种加壳方法保护的软件实现脱壳。这种通用脱壳方法的存在大大降低了加壳对于软件的保护效果。
为了防止脱壳工具自动化脱壳,有一种改进的加壳方法是将软件代码的一部分转移到壳代码中。在原有代码的位置插入跳转指令,使得程序执行到此就跳转到壳中运行。当转移的代码执行完毕,再跳转到原始位置的后续代码上继续运行。通过在原程序和壳代码之间反复跳转,使得壳与软件主体结合在一起难以分开,防止了脱壳工具把壳自动去除。
代码转移的实现建立在对原始程序代码详细分析的基础上。对软件进行加壳时,首先通过反汇编技术掌握程序中的所有跳转指令和内存访问指令。然后才能做到移动代码的位置但不改变程序的流程和指令的执行结果。即确保移动的那部分代码不会中途跳出自身范围,不会访问外部的内存,其他代码也不会直接跳转到被移动的代码中。如果不可避免存在这样的跳转或者内存访问,则需要修改相关指令,改变跳转的目的地址和内存寻址地址,让最终执行的逻辑保持不变。
加壳方法实现代码转移的关键技术点是指令分析。然而很多软件的执行流程是很复杂的,特别是使用寄存器做间接跳转和间接寻址的指令,难以准确预知跳转和寻址的目的地址。即使是知名的反汇编引擎和大型逆向分析工具,在解决这些问题上也不是完全可靠的。因此,代码转移到壳中会产生潜在的兼容性问题。如果转移了不能移动的代码,将导致软件运行出现异常。
一般来说只有程序代码能够转移到壳中。软件的数据(资源)要转移到壳中则非常困难。这是因为通过分析指令往往只能得到其访问数据的起始地址,而数据的长度是不确定的和动态变化的。对于数据的保护,通常的做法是在加壳时将所有数据原地加密(不改变内存地址)。在执行程序主体前,壳代码再把数据在内存中完全解密。即数据只能作为一个整体在原地进行保护。这样的保护力度是比较弱的,通过进程内存转储即可获得所有数据。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州安恒信息技术股份有限公司,未经杭州安恒信息技术股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911402482.2/2.html,转载请声明来源钻瓜专利网。