一种基于壳技术的软件保护方法技术

技术编号:8626287 阅读:169 留言:0更新日期:2013-04-25 23:32
本发明专利技术公开了一种基于壳技术的软件保护方法,涉及软件加密技术领域,本发明专利技术基于代码乱序的机制,将原程序与外壳程序代码进行乱序来到达融合的目的,并且在代码乱序的同时加入花指令来防御静态反编译;并在外壳程序中使用SHE技术来反动态跟踪。通过本发明专利技术保护的软件,当破解者将外壳脱掉的同时,也除去了部分的原程序,从而达到保护软件的目的。

【技术实现步骤摘要】

本专利技术涉及软件加密
,具体涉及。
技术介绍
随着计算机软件技术的发展,恶意软件感染破坏能力的增强、破解者水平的大幅提升,传统的软加密和硬加密方案对于安全性要求高的软件来说,保护效果不明显,现在已经发展到其他很多成熟的方式注册验证、软件水印、反跟踪技术、加壳技术等。其中壳加密技术是软件加密中最常见、最安全的一种技术。加壳技术保护方式是指利用某种算法,对可移植的可执行文件PE进行加密、压缩,给PE文件加上一个外壳。软件壳其实是一段为了防止软件被非法使用、篡改、拷贝等的程序。通常这部分代码比原程序优先执行并且取得控制权,这样就起到保护软件的作用。加了壳的PE文件仍然能直接运行,这个外壳程序负责把PE文件原程序解密解压到内存里,并且把控制权还给解压解密后的原程序。整个过程都是运行在内存里,并且程序运行速度基本没有影响,解密、解压过程完全透明。PE文件格式PE 二进制文件格式是微软操作系统系列中的子集。PE文件格式二进制数据流是线性的。它从一个MS-DOS头部结构开始,一个模式的程序残余紧随其后,接着就是PE文件头,其中PE文件头包含映像文件头(File Header)和可选文件头部(Optional Header),这部分后面的结构就是区块表头,紧跟在区块表头之后就是全部的区块(Selection),PE文件的尾部是其他数据,其中包含Code View调试信息、COFF符号表信息、COFF行号信息等。PE文件格式总体结构从大体上分为五大部分DOS首部(DOS Header)、PE文件头(PE Header)、区块块表(Section Table)、块(Section)、调试信息。其中,PE文件格式结构包含三个非常重要的表头D0S Header :为了兼容以前的平台;PE Header PE文件相关配置信息;SeCtion Header PE文件各个区块的相关信息。PE装载器加载PE文件的时候,就是根据这个三个表头所提供的文件信息把文件各部分加载映射到内存中各自相应的位置,保证与磁盘数据结构布局的一致性。通过遍历在磁盘里PE文件内部信息来决定哪一部分被映射,一旦文件被加载到内存里之后,内存中的数据结构布局与外存(磁盘)上的数据结构布局的一致性。因此,如果清楚在外存(磁盘)中数据结构中存在的内容,那么基本上都可以在内存映射文件里找到一样的数据;但是在内存映像文件中,通常已经改变了这些数据之间的相对位置,数据偏移地址已经和在外存上不一样了,无论如何,这些全部的数据都可以将外存文件偏移与内存映像文件偏移进行转换。加了壳的PE文件如果要实现脱壳,第一步也是最重要的一步就是找到PE文件原程序入口地址,然后抓取内存PE文件的映像,还原程序。
技术实现思路
针对上述现有技术,本专利技术要解决的技术问题是现有加了壳的PE文件,壳加载本身就提供了一个明显断点给脱壳者,即无论什么壳最终都要转的原程序的入口地址,然后成功脱掉外壳;其最终都要把控制权还给原程序,因此不能够将入口地址这个分界点进行隐藏,因此只能针对脱壳的第二步,采取一定保护措施让脱壳者即使得到的内存PE文件映像也没有很好的办法还原成原程序。为了解决上述技术问题,本专利技术采用如下技术方案,其特征在于,包括以下步骤,一、加密步骤对内存中映像文件的区块数据、资源数据进行加密;二、外壳步骤外壳程序首先运行,解密被加密的数据,修改相关信息,还原PE文件的原程序。三、外壳添加步骤在PE文件中新建用于存放外壳部分数据的区块,同时将PE文件的原区块表部分添加到该区块表头;四、PE文件处理步骤JfPE文件读入的内存,然后对PE文件内存映像的附加数据、Import Tabel、资源数据进行处理。作为本专利技术进一步的改进,将所述外壳步骤中的PE文件原程序进行乱序处理。更进一步地,所述乱序处理包括如下三步①找出程序代码中的跳转指令jmp、函数调用指令call和条件专用指令jcc;②筛选步骤①中指令地址,如果跳转16位以下的直接不考虑,如果等于16位,看偏移是否足够跳转到花指令的VAR。如果高于16位,直接跳转;③当遇到偏移的时候,保存原指令要跳转的地址。然后跳转到花指令空间,然后在花指令执行完的地方增添一个跳转到原先要跳转的那个地址。作为本专利技术进一步的改进,在所述乱序处理时的同时加入用来防御静态反编译的花指令;作为本专利技术进一步的改进,在外壳程序中使用了 SHE技术来反动态跟踪。所述加密步骤的详细处理过程为将要加壳的PE文件从磁盘加载到内存里面,接着对PE文件内存映像每个相关头、区块进行处理,主要是对映像文件区块数据进行加密。所述外壳添加步骤的详细处理过程为计算代码段的CRC32值并写入到PE文件的头里面,特殊数据处理,输入表的构建,最终把外壳程序附加到该PE文件的内存映像里,这样就组成了新的加了壳的PE文件。最后,加了壳的PE文件开始运行壳程序的部分,它将对原PE文件程序就行CRC32校验,解密区块数据,输入表的重建,程序乱序,最后跳转到原程序入口,把控制权移交给原程序。VAR 是variable变量、可变物的简写,在多种计算机编程语言中,var被用作定义变量的关键字。与现有技术相比,本专利技术具有以下有益效果一、本专利技术将原程序和外壳代码进行乱序,到达原程序与外壳的融合,大大增强保护软件的能力;通过本专利技术加密保护的软件,即使脱壳者找到了原程序入口地址,抓取了 PE文件内存映像,将把壳脱掉,也很难还原PE文件原程序;因为一旦把壳脱掉,那么原程序的一部分也给脱掉了,那么这样就不能将原程序还原了,从而到达保护软件的目的;二、本专利技术在实现的加壳过程中还可以结合多种软件保护技术来增强抵御分析、破解的能力,到达更好的保护软件的目的。附图说明图1为本专利技术的总设计图2为本专利技术的框架结构图3为基于融合的软件保护模型。具体实施例方式下面将结合附图及具体实施方式对本专利技术作进一步的描述。本专利技术包括原PE文件处理和外壳程序,所述原PE文件处理包括加壳程序和PE文件的重组过程将要加壳的PE文件从磁盘加载到内存里面,接着对PE文件内存映像每个相关头、区块进行处理,主要是对映像文件区块数据进行加密,计算代码段的CRC32值并写入到PE文件的头里面,特殊数据处理,输入表的构建,最终把外壳程序附加到该PE文件的内存映像里,这样就组成了新的加了壳PE文件了。所述外壳程序,加了壳的PE文件开始运行壳程序的部分,它将对原PE文件程序就行CRC32校验,解密区块数据,输入表的重建,程序乱序,最后跳转到原程序入口,把控制权移交给原程序。从文件格式分布角度来看,加了壳的PE文件由四部分组成。分别是PE文件头、被加密的文件区块数据、外壳程序、附加数据。原PE文件的区块数据以加密的方式存放。原PE文件将新增一个区块,用来存放外壳程序数据。其中在该新增的区块数据中,以ShellEndO为界线,在这之前的数据(主要是资源中的一些数据如图标等)以加密的方式存放,而在之后的数据没有做任何处理,也就是以明文的方式存放的。加了壳的PE文件程序入口地址指向外壳的入口地址ShellStartO。引导部分进行一些初始化工作,有时如果加密了后面一部分外壳程序,那在这里将进行解压。之后利用来进行校验PE文件的完整性,防止脱壳者动态跟踪、脱壳、反汇编。如果校验成本文档来自技高网
...

【技术保护点】
一种基于壳技术的软件保护方法,其特征在于,包括以下步骤,一、加密步骤:对内存中映像文件的区块数据、资源数据进行加密;二、外壳步骤:外壳程序首先运行,解密被加密的数据,修改相关信息,还原PE文件的原程序。三、外壳添加步骤:在PE文件中新建用于存放外壳部分数据的区块,同时将PE文件的原区块表部分添加到该区块表头;四、PE文件处理步骤:将PE文件读入的内存,然后对PE文件内存映像的附加数据、Import?Tabel、资源数据进行处理。

【技术特征摘要】
1.一种基于壳技术的软件保护方法,其特征在于,包括以下步骤,一、加密步骤对内存中映像文件的区块数据、资源数据进行加密;二、外壳步骤外壳程序首先运行,解密被加密的数据,修改相关信息,还原PE文件的原程序。三、外壳添加步骤在PE文件中新建用于存放外壳部分数据的区块,同时将PE文件的原区块表部分添加到该区块表头;四、PE文件处理步骤将PE文件读入的内存,然后对PE文件内存映像的附加数据、Import Tabel、资源数据进行处理。2.根据权利要求1所述的基于壳技术的软件保护方法,其特征在于,将所述外壳步骤中的PE文件原程序进行乱序处理。3.根据权利要求2所述的基于壳技术的软件保护方法,其特征在于,所述乱序处理包括如下三步①找出程序代码中的跳转指令jmp、函数调用指令call和条件专用指令jcc;②筛选步骤①中的指令地址,如果跳转16位以下的直接不考虑,如果等于16位,看偏移是否足够跳转到花指令的VAR,如果高...

【专利技术属性】
技术研发人员:陈文宇李文刘贵松欧睿杰符明晟袁野朱建
申请(专利权)人:电子科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1