Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
FILE PACKING AND UNPACKING METHOD, AND DEVICE THEREOF
Document Type and Number:
WIPO Patent Application WO/2013/091452
Kind Code:
A1
Abstract:
A file packing and unpacking method and device. The method comprises: using an encryption/decryption algorithm to encrypt a target file to obtain the encrypted target file, and dividing the encryption/decryption algorithm into a first part encryption/decryption algorithm and a second part encryption/decryption algorithm; using the first part encryption/decryption algorithm and the encrypted target file to obtain the packed target file; informing an unpacking device of the packed target file and the second part encryption/decryption algorithm. According to the method, the encryption/decryption algorithm is divided, and a part of the encryption/decryption algorithm is carried only in the packed target file, so that it is not easy to find and crack the complete encryption/decryption algorithm, thereby improving the security of the packing technology.

Inventors:
TANG SHENGFU (CN)
Application Number:
CN2012/084867
Publication Date:
June 27, 2013
Filing Date:
November 20, 2012
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
TENCENT TECH SHENZHEN CO LTD (CN)
International Classes:
G06F21/60
Foreign References:
CN102108512A2011-06-29
CN102184363A2011-09-14
CN102004884A2011-04-06
Attorney, Agent or Firm:
PSHIP FIRM, LLC (CN)
上海波拓知识产权代理有限公司 (CN)
Download PDF:
Claims:
1、 一种文件加壳的处理方法, 其特征在于, 包括:

利用加解密算法对目标文件进行加密, 获得加密目标文件, 并将所述加 解密算法分割成第一部分加解密算法和第二部分加解密算法;

利用所述第一部分加解密算法和所述加密目标文件获得加壳目标文件; 以及

将所述加壳目标文件以及所述第二部分加解密算法通知给脱壳设备。

2、 如权利要求 1 所述的方法, 其特征在于, 所述利用所述第一部分加 解密算法和所述加密目标文件获得加壳目标文件, 包括:

将所述第一部分加解密算法嵌入到加壳模板文件的算法区域内, 并将所 述加密目标文件嵌入到所述加壳模板文件的数据区域内, 以通过所述加壳模 板文件获得所述加壳目标文件。

3、 如权利要求 1 所述的方法, 其特征在于, 所述将所述第二部分加解 密算法通知给脱壳设备, 包括:

获得所述第一部分加解密算法所对应的 MD5值, 并在算法库中记录所 述第一部分加解密算法所对应的 MD5值与所述第二部分加解密算法之间的 对应关系; 以及

将所述算法库通知给所述脱壳设备。

4、如权利要求 1-3任一项所述的方法,其特征在于,所述文件包括: Flash 文件。

5、 一种文件脱壳的处理方法, 其特征在于, 包括:

接收加壳设备发送的加壳目标文件以及第二部分加解密算法;

从所述加壳目标文件中获得第一部分加解密算法和加密目标文件; 通过所述第一部分加解密算法以及所述第二部分加解密算法获得加解 密算法; 以及

通过所述加解密算法对所述加密目标文件进行解密, 得到目标文件。

6、 如权利要求 5 所述的方法, 其特征在于, 所述从所述加壳目标文件 中获得第一部分加解密算法和加密目标文件, 包括:

获得所述加壳目标文件的加壳模板文件的算法区域内所嵌入的所述第 一部分加解密算法, 以及所述加壳模板文件的数据区域内所嵌入的所述加密 目标文件。

7、 如权利要求 5 所述的方法, 其特征在于, 所述接收加壳设备发送的 第二部分加解密算法, 包括:

接收所述加壳设备发送的算法库, 在所述算法库中记录有所述第一部分 加解密算法所对应的 MD5值与所述第二部分加解密算法之间的对应关系。

8、 如权利要求 7所述的方法, 其特征在于, 所述通过所述第一部分加 解密算法以及所述第二部分加解密算法获得加解密算法, 包括:

获得所述第一部分加解密算法所对应的 MD5值, 并通过所述第一部分 加解密算法所对应的 MD5值查询所述算法库, 获得对应的第二部分加解密 算法; 以及

对所述第一部分加解密算法以及获得的第二部分加解密算法进行合并, 以获得所述加解密算法。

9、如权利要求 5-8任一项所述的方法,其特征在于,所述文件包括: Flash 文件。

10、 一种加壳设备, 其特征在于, 包括:

第一获得模块, 用于利用加解密算法对目标文件进行加密, 获得加密目 标文件;

分割模块, 用于将所述加解密算法分割成第一部分加解密算法和第二部 分加解密算法;

第二获得模块, 用于利用所述第一部分加解密算法和所述加密目标文件 获得加壳目标文件; 以及

发送模块, 用于将所述加壳目标文件以及所述第二部分加解密算法通知 给脱壳设备。

11、 如权利要求 10所述的加壳设备, 其特征在于,

所述第二获得模块, 具体用于将所述第一部分加解密算法嵌入到加壳模 板文件的算法区域内, 并将所述加密目标文件嵌入到所述加壳模板文件的数 据区域内, 以通过所述加壳模板文件获得所述加壳目标文件。

12、 如权利要求 10所述的加壳设备, 其特征在于,

所述发送模块, 具体用于获得所述第一部分加解密算法所对应的 MD5 值, 并在算法库中记录所述第一部分加解密算法所对应的 MD5值与所述第 二部分加解密算法之间的对应关系; 以及将所述算法库通知给所述脱壳设 备。

13、 如权利要求 10-12任一项所述的加壳设备, 其特征在于, 所述文件 包括: Flash文件。

14、 一种脱壳设备, 其特征在于, 包括:

接收模块, 用于接收加壳设备发送的加壳目标文件以及第二部分加解密 算法;

第一获得模块, 用于从所述加壳目标文件中获得第一部分加解密算法和 加密目标文件;

第二获得模块, 用于通过所述第一部分加解密算法以及所述第二部分加 解密算法获得加解密算法; 以及

第三获得模块, 用于通过所述加解密算法对所述加密目标文件进行解 密, 得到目标文件。

15、 如权利要求 14所述的脱壳设备, 其特征在于,

所述第一获得模块, 具体用于获得所述加壳目标文件的加壳模板文件的 算法区域内所嵌入的所述第一部分加解密算法, 以及所述加壳模板文件的数 据区域内所嵌入的所述加密目标文件。

16、 如权利要求 14所述的脱壳设备, 其特征在于,

所述接收模块, 具体用于接收所述加壳设备发送的算法库, 在所述算法 库中记录有所述第一部分加解密算法所对应的 MD5值与所述第二部分加解 密算法之间的对应关系。

17、 如权利要求 16所述的脱壳设备, 其特征在于,

所述第二获得模块, 具体用于获得所述第一部分加解密算法所对应的 MD5值,并通过所述第一部分加解密算法所对应的 MD5值查询所述算法库, 获得对应的第二部分加解密算法;

以及对所述第一部分加解密算法以及获得的第二部分加解密算法进行 合并, 以获得所述加解密算法。

18、 如权利要求 14-17任一项所述的脱壳设备, 其特征在于, 所述文件 包括: Flash文件。

Description:
一种文件加壳、 脱壳的处理方法及其设备 技术领域

本发明涉及通信技术领域, 尤其涉及一种文件加壳、 脱壳的处理方法及 其设备。 背景技术

现有技术中, 如图 1所示, 为文件加壳、 脱壳技术的原理示意图, 通过 加解密算法对目标文件进行加密, 得到加密目标文件 (即加密后的目标文 件) ; 之后, 将加密目标文件嵌入到加壳目标文件 (即加壳后的目标文件) 中; 此外, 加壳目标文件中还嵌入有加解密算法所需要的 算法 Key (密钥)、 以及加解密算法。 加壳是对可执行程序资源压缩, 是保护文件的常用手段, 加壳过的程序可以直接运行, 但是不能查看源代码, 需要经过脱壳才可以查 看源代码。

对于文件脱壳过程, 在获得加壳目标文件后, 会自动执行加壳目标文件 中的加解密算法, 以对加壳目标文件中的加密目标文件进行解密 , 从而将加 壳目标文件还原为目标文件, 之后再加载目标文件, 完成脱壳过程。

现有技术中至少存在以下问题:

加解密算法携带在加壳目标文件中, 容易被发现和破解, 从而降低加壳 技术的安全性。

发明内容

本发明实施例提供一种文件加壳、 脱壳的处理方法及其设备, 以提高加 壳技术的安全性。

本发明实施例提供一种文件加壳的处理方法, 包括:

利用加解密算法对目标文件进行加密, 获得加密目标文件, 并将所述加 解密算法分割成第一部分加解密算法和第二部 分加解密算法;

利用所述第一部分加解密算法和所述加密目标 文件获得加壳目标文件; 以及 将所述加壳目标文件以及所述第二部分加解密 算法通知给脱壳设备。 本发明实施例提供一种文件脱壳的处理方法, 包括:

接收加壳设备发送的加壳目标文件以及第二部 分加解密算法; 从所述加壳目标文件中获得第一部分加解密算 法和加密目标文件; 通过所述第一部分加解密算法以及所述第二部 分加解密算法获得加解 密算法; 以及

通过所述加解密算法对所述加密目标文件进行 解密, 得到目标文件。 本发明实施例提供一种加壳设备, 包括:

第一获得模块, 用于利用加解密算法对目标文件进行加密, 获得加密目 标文件;

分割模块, 用于将所述加解密算法分割成第一部分加解密 算法和第二部 分加解密算法;

第二获得模块, 用于利用所述第一部分加解密算法和所述加密 目标文件 获得加壳目标文件; 以及

发送模块, 用于将所述加壳目标文件以及所述第二部分加 解密算法通知 给脱壳设备。

本发明实施例提供一种脱壳设备, 包括:

接收模块, 用于接收加壳设备发送的加壳目标文件以及第 二部分加解密 算法;

第一获得模块, 用于从所述加壳目标文件中获得第一部分加解 密算法和 加密目标文件;

第二获得模块, 用于通过所述第一部分加解密算法以及所述第 二部分加 解密算法获得加解密算法; 以及

第三获得模块, 用于通过所述加解密算法对所述加密目标文件 进行解 密, 得到目标文件。

本发明实施例通过对加解密算法进行分割, 并只在加壳目标文件中携带 部分加解密算法, 使得完整的加解密算法不容易被发现和破解, 从而提高加 壳技术的安全性。

上述说明仅是本发明技术方案的概述, 为了能够更清楚了解本发明的技 术手段, 而可依照说明书的内容予以实施, 并且为了让本发明的上述和其它 特征和优点能够更明显易懂, 以下特举实施例, 并配合附图,详细说明如下。

附图概述

图 1是现有技术中文件加壳、 脱壳技术的原理示意图;

图 2是本发明实施例一中的加壳过程的原理示意 ;

图 3是本发明实施例一中的脱壳过程的原理示意 ;

图 4是本发明实施例一提供的文件加壳、 脱壳的处理方法流程示意图; 图 5是本发明实施例二提供的一种加壳设备的结 示意图;

图 6是本发明实施例三提供的一种脱壳设备的结 示意图。 本发明的较佳实施方式

下面将结合本发明中的附图, 对本发明中的技术方案进行清楚、 完整地 描述, 显然, 所描述的实施例仅仅是本发明的一部分实施例 , 而不是全部的 实施例。 基于本发明中的实施例, 本领域普通技术人员在没有做出创造性劳 动前提下所获得的所有其他实施例, 都属于本发明保护的范围。

实施例一

本发明实施例一提供一种文件(包括但不限于 Flash文件)加壳、 脱壳 的处理方法, 该方法可应用于离散式的文件加壳、 脱壳处理过程中; 该离散 式是指每一个目标文件在脱壳时都是相互单独 的。 如图 2和图 3所示, 分别 为加壳过程的原理示意图和脱壳过程的原理示 意图; 图 2中, 加壳过程的主 要原理为: 加壳设备利用加解密算法 (Alg )对目标文件 (即需要加壳的目 标文件 TargetFile ) 进行加密, 获得加密目标文件 (即加密后的目标文件 CipherFile ) , 并将加解密算法分割成第一部分加解密算法 (AlgB ) 和第二 部分加解密算法(AlgA ) , 加壳设备再利用第一部分加解密算法(AlgB )和 加密目标文件( CipherFile )获得加壳目标文件。 图 3中, 脱壳过程的主要原 理为: 脱壳设备接收加壳设备发送的加壳目标文件 (ShellFile ) 以及第二部 分加解密算法(AlgA ) , 脱壳设备从加壳目标文件 (ShellFile ) 中获得第一 部分加解密算法 (AlgB ) 和加密目标文件 (CipherFile ) , 然后, 脱壳设备 通过第一部分加解密算法(AlgB )以及第二部分加解密算法(AlgA )获得加 解密算法,最后,脱壳设备通过加解密算法( Alg )对加密目标文件( CipherFile ) 进行解密, 得到目标文件( TargetFile ) 。

结合上述图 2及图 3的原理示意图, 如图 4所示, 该文件加壳、 脱壳的 处理方法包括以下步骤:

步骤 401 , 加壳设备(如开发机、 编译机等)利用加解密算法(Alg )对 目标文件(即需要加壳的目标文件 TargetFile )进行加密, 获得加密目标文件 (即加密后的目标文件 CipherFile ) , 并将加解密算法分割成第一部分加解 密算法(AlgB )和第二部分加解密算法(AlgA ) , 且该第一部分加解密算法 ( AlgB ) 中携带有加解密算法所需要的算法 Key (密钥) 。

本发明实施例中, 在将加解密算法 (Alg )分割成第一部分加解密算法

( AlgB )以及第二部分加解密算法(AlgA )的过程中, 具体为: 加壳设备将 加解密算法(Alg )对应的文件分割成两部分 AlgA和 AlgB。

步骤 402, 加壳设备利用第一部分加解密算法 (AlgB )和加密目标文件 ( CipherFile )获得加壳目标文件(ShellFile, 即加壳后最终生成的文件) 。

具体的, 加壳设备可以将第一部分加解密算法(AlgB )嵌入到加壳模板 文件(ShellTemplate, 即加壳所需要的模板文件) 的算法区域(即 AlgB 字 段) 内, 并可以将加密目标文件 ( CipherFile ) 嵌入到加壳模板文件 ( ShellTemplate ) 的数据区域(即 Data字段) 内, 从而通过加壳模板文件 ( ShellTemplate )获得加壳目标文件(ShellFile ) 。

本发明实施例中, 在算法区域(AlgB 字段)和数据区域(Data字段) 为空的加壳模板文件 (ShellTemplate ) 中, 当嵌入了第一部分加解密算法 ( AlgB ) 和加密目标文件 ( CipherFile ) 后, 即可以生成加壳目标文件 ( ShellFile ) 。

本发明实施例的一种优选实施方式中, 加壳模板文件(ShellTemplate ) 中还可以有目标文件类型区域(即 Type字段) , 因此, 加壳设备在生成加 壳目标文件 (ShellFile ) 的过程中, 还可以获得目标文件 (TargetFile ) 的文 件类型, 并将目标文件 (TargetFile ) 的文件类型嵌入到加壳模板文件 ( ShellTemplate ) 的目标文件类型区域( Type字段) 中。

步骤 403 , 加壳设备将加壳目标文件( ShellFile )以及第二部分加解密算 法(AlgA )通知给脱壳设备(如客户端等) 。 其中, 加壳设备在获得加壳目 标文件(ShellFile )后, 可以将加壳目标文件( ShellFile )通知给良务器, 并 由服务器将加壳目标文件(ShellFile )通知给脱壳设备。

本发明实施例中, 加壳设备可以将加壳目标文件 (ShellFile ) 以及第二 部分加解密算法 (AlgA ) —起通知给脱壳设备, 也可以将加壳目标文件 ( ShellFile ) 以及第二部分加解密算法(AlgA )分别通知给脱壳设备。

需要注意的是, 在通知第二部分加解密算法(AlgA )的过程中, 加壳设 备是以算法库(AlgLib ) 的方式进行通知的; 其中, 算法库(AlgLib ) 中存 储了若干个加解密算法的 AlgB_MD5与 AlgA之间的对应关系, AlgB_MD5 是加解密算法的 AlgB的 MD5值, AlgA是加解密算法的 AlgA。

具体的,加壳设备需要获得第一部分加解密算 法( AlgB )所对应的 MD5 值(即 AlgB_MD5 ) , 并在算法库(AlgLib ) 中记录第一部分加解密算法所 对应的 MD5值(AlgB_MD5 )与第二部分加解密算法(AlgA )之间的对应 关系; 之后, 加壳设备可以将算法库(AlgLib )通知给脱壳设备。

在上述文件加壳处理的基础上, 本发明实施例中, 如图 4所示, 还可以 包括以下文件脱壳处理过程:

步骤 404, 脱壳设备接收加壳设备发送的加壳目标文件( ShellFile )以及 第二部分加解密算法(AlgA ) 。

需要注意的是, 在接收加壳设备发送的第二部分加解密算法( AlgA )的 过程中, 脱壳设备是以接收加壳设备发送的算法库(Alg Lib ) 的方式接收第 二部分加解密算法(AlgA ) 的; 其中, 算法库(AlgLib ) 中存储了若干个加 解密算法的第一部分加解密算法( AlgB )所对应的 MD5值(即 AlgB_MD5 ) 与第二部分加解密算法 (AlgA )之间的对应关系。

步骤 405, 脱壳设备从加壳目标文件( ShellFile )中获得第一部分加解密 算法 (AlgB )和加密目标文件 (CipherFile ) 。

具体的, 由于加壳目标文件( ShellFile )的加壳模板文件( ShellTemplate ) 中嵌入了第一部分加解密算法 (AlgB )和加密目标文件 (CipherFile ) , 因 此脱壳设备可以从加壳目标文件( ShellFile )的加壳模板文件( ShellTemplate ) 的算法区域内 (AlgB 字段)获得其嵌入的第一部分加解密算法(Alg B ) , 并可以从加壳目标文件( ShellFile )的加壳模板文件( ShellTemplate )的数据 区域内 (Data字段)获得其嵌入的加密目标文件 (CipherFile ) 。 本发明实施例的一种优选实施方式中, 当在加壳目标文件 (ShellFile ) 中嵌入有目标文件( TargetFile )的文件类型时, 脱壳设备还可以从加壳目标 文件 (ShellFile ) 的加壳模板文件 ( ShellTemplate ) 的目标文件类型区域内 ( Type字段)获得其嵌入的目标文件(TargetFile ) 的文件类型。

步骤 406, 脱壳设备通过第一部分加解密算法 (AlgB ) 以及第二部分加 解密算法 (AlgA )获得加解密算法。

具体的, 在从加壳目标文件 (ShellFile ) 中获得第一部分加解密算法 ( AlgB )之后, 该脱壳设备需要获得该第一部分加解密算法( AlgB )所对应 的 MD5 值(AlgB_MD5 ) , 并通过第一部分加解密算法所对应的 MD5 值 ( AlgB_MD5 ) 查询算法库(AlgLib ) ; 且由于算法库 ( AlgLib ) 中存储了 若干个加解密算法的第一部分加解密算法 (AlgB )所对应的 MD5 值(即 AlgB_MD5 )与第二部分加解密算法(AlgA )之间的对应关系, 因此可查询 到对应的第二部分加解密算法(AlgA ); 之后, 脱壳设备对第一部分加解密 算法(AlgB ) 以及获得的第二部分加解密算法(AlgA )进行合并, 以获得加 解密算法( Alg ) 。

步骤 407,脱壳设备通过加解密算法( Alg )对加密目标文件( CipherFile ) 进行解密, 得到目标文件( TargetFile ) 。

本发明实施例中, 通过对加解密算法进行分割, 并只在加壳目标文件中 携带部分加解密算法, 使得完整的加解密算法不容易被发现和破解, 从而提 高加壳技术的安全性。

需要注意的是, 与现有文件加密系统中对文件进行加密的过程 相比, 在 文件加密系统中, 并未涉及将加解密算法分割成第一部分加解密 算法和第二 部分加解密算法的过程, 且文件加密系统中对文件的处理无法保证程序 的运 行, 而上述加壳、 脱壳的处理方法可以保证程序的运行。

实施例二

基于与上述方法同样的发明构思, 本发明实施例中还提供了一种加壳设 备, 如图 5所示, 该加壳设备包括:

第一获得模块 51 , 用于利用加解密算法对目标文件进行加密, 获得加密 目标文件;

分割模块 52,用于将所述加解密算法分割成第一部分加解 密算法和第二 部分加解密算法;

第二获得模块 53 ,用于利用所述第一部分加解密算法和所述加 目标文 件获得加壳目标文件;

发送模块 54,用于将所述加壳目标文件以及所述第二部分 加解密算法通 知给脱壳设备。

所述第二获得模块 53 ,具体用于将所述第一部分加解密算法嵌入到 壳 模板文件的算法区域内, 并将所述加密目标文件嵌入到所述加壳模板文 件的 数据区域内, 以通过所述加壳模板文件获得所述加壳目标文 件。

所述发送模块 54,具体用于获得所述第一部分加解密算法所对 应的 MD5 值, 并在算法库中记录所述第一部分加解密算法所 对应的 MD5值与所述第 二部分加解密算法之间的对应关系; 以及将所述算法库通知给所述脱壳设 备。

本发明实施例中, 上述的文件包括但不限于 Flash文件。

实施例三

基于与上述方法同样的发明构思, 本发明实施例中还提供了一种脱壳设 备, 如图 6所示, 该脱壳设备包括:

接收模块 61 ,用于接收加壳设备发送的加壳目标文件以及 二部分加解 密算法;

第一获得模块 62,用于从所述加壳目标文件中获得第一部分加 解密算法 和加密目标文件;

第二获得模块 63 ,用于通过所述第一部分加解密算法以及所述 二部分 加解密算法获得加解密算法;

第三获得模块 64,用于通过所述加解密算法对所述加密目标文 件进行解 密, 得到目标文件。

所述第一获得模块 62,具体用于获得所述加壳目标文件的加壳模板 文件 的算法区域内所嵌入的所述第一部分加解密算 法, 以及所述加壳模板文件的 数据区域内所嵌入的所述加密目标文件。

所述接收模块 61 , 具体用于接收所述加壳设备发送的算法库, 在所述算 法库中记录有所述第一部分加解密算法所对应 的 MD5值与所述第二部分加 解密算法之间的对应关系。 所述第二获得模块 63 ,具体用于获得所述第一部分加解密算法所对 的 MD5值,并通过所述第一部分加解密算法所对应 的 MD5值查询所述算法库, 获得对应的第二部分加解密算法;

以及对所述第一部分加解密算法以及获得的第 二部分加解密算法进行 合并, 以获得所述加解密算法。

本发明实施例中, 上述的文件包括但不限于 Flash文件。

通过以上的实施方式的描述, 本领域的技术人员可以清楚地了解到本发 明可借助软件加必需的通用硬件平台的方式来 实现, 当然也可以通过硬件, 但很多情况下前者是更佳的实施方式。 基于这样的理解, 本发明的技术方案 本质上或者说对现有技术做出贡献的部分可以 以软件产品的形式体现出来, 该计算机软件产品存储在一个存储介质中, 包括若干指令用以使得一台计算 机设备(可以是个人计算机, 服务器, 或者网络设备等)执行本发明各个实 施例所述的方法。

本领域技术人员可以理解附图只是一个优选实 施例的示意图, 附图中的 模块或流程并不一定是实施本发明所必须的。

本领域技术人员可以理解实施例中的装置中的 模块可以按照实施例描 述进行分布于实施例的装置中, 也可以进行相应变化位于不同于本实施例的 一个或多个装置中。 上述实施例的模块可以集成于一体, 也可以分离部署。 上述实施例的模块可以合并为一个模块, 也可以进一步拆分成多个子模块。

上述本发明实施例序号仅仅为了描述, 不代表实施例的优劣。

以上公开的仅为本发明的几个具体实施例,但 是,本发明并非局限于此, 任何本领域的技术人员能思之的变化都应落入 本发明的保护范围。