一种对可执行文件进行加固的方法和装置制造方法及图纸

技术编号:15437739 阅读:160 留言:0更新日期:2017-05-26 03:45
本发明专利技术公开了一种对可执行文件进行加固的方法和装置。其中方法包括:将可执行文件中的N个待加密的函数按次序存储,其中,N为大于一的自然数;为每个待加密的函数选择对应的加密方法;依次对N个待加密的函数进行加密,其中,对第一个待加密函数,以该待加密函数对应的加密方法进行加密;对第M个待加密函数,以该待加密函数对应的加密方法进行加密后,再以第M‑1个函数所使用的所有加密方法,按所述第M‑1个函数所使用加密方法的次序进行加密;其中,M为大于一的自然数。该技术方案既能够选择较少的加密方法,还通过加密手段的复杂化使得得破解的可能性大大降低,对可执行文件进行加固的效率高,效果好。

Method and device for reinforcing executable file

The invention discloses a method and a device for reinforcing an executable file. The method comprises the following steps: N will be a function of the executable file to be encrypted in order to storage, wherein N is a natural number larger than one; for each function to be encrypted encryption method corresponding to N; in order to be encrypted by encryption function, which, to be the first to encrypt the encryption function. The method to encrypt the encryption function corresponding to the M; to be encrypted with the encryption function, the encryption method to the corresponding encryption function, all encryption methods to the M 1 functions used in the article, according to the M 1 function using encryption method to encrypt the order among them,; M is a natural number larger than one. The technical scheme can not only select fewer encryption methods, but also complicate the encryption method so as to greatly reduce the possibility of cracking, and the efficiency of the executable file is high and the effect is good.

【技术实现步骤摘要】
一种对可执行文件进行加固的方法和装置
本专利技术涉及计算机安全领域,具体涉及一种对可执行文件进行加固的方法和装置。
技术介绍
一般地,为了能够保护可执行文件中的代码不被攻击者逆向破解,通过为可执行文件加壳可以实现防止攻击者逆向我们代码逻辑的目的,加壳的手段一般是给可执行文件的部分或者全部进行加密。但是目前而言,加密方法往往是单层次的,这样很容易被破解者找到应对手段,不能满足需求。
技术实现思路
鉴于上述问题,提出了本专利技术以便提供一种克服上述问题或者至少部分地解决上述问题的对可执行文件进行加固的方法和装置。依据本专利技术的一个方面,提供了一种对可执行文件进行加固的方法,包括:将可执行文件中的N个待加密的函数按次序存储,其中,N为大于一的自然数;为每个待加密的函数选择对应的加密方法;依次对N个待加密的函数进行加密,其中,对第一个待加密函数,以该待加密函数对应的加密方法进行加密;对第M个待加密函数,以该待加密函数对应的加密方法进行加密后,再以第M-1个函数所使用的所有加密方法,按所述第M-1个函数所使用加密方法的次序进行加密;其中,M为大于一的自然数。可选地,所述将可执行文件中的N个待加密的函数按次序存储包括:将该N个待加密的函数按次序存储至可执行文件中的同一代码区段。可选地,该方法还包括:获取该N个待加密的函数在所述可执行文件执行时被调用的先后顺序,使该N个待加密的函数的存储次序与该N个待加密的函数在所述可执行文件执行时被调用的先后顺序一致。可选地,该方法在所有步骤之前还包括:将所述可执行文件转换为二进制形式。可选地,该方法还包括:向加固后的可执行文件添加解密逻辑。可选地,所述解密逻辑包括:与各待加密方法对应的解密方法。可选地,所述解密逻辑包括:在可执行文件被加载后,在需要调用所述代码区段中被加密的函数时,以该函数对应的解密方法对所述代码区段进行解密。可选地,所述可执行文件为安卓安装包中的可执行文件。可选地,所述方法还包括:对安卓安装包进行解包,得到至少一个可执行文件;将加固后的可执行文件打包到对应的安装包中。依据本专利技术的另一方面,提供了一种对可执行文件进行加固的装置,包括:待加密函数预处理单元,适于将可执行文件中的N个待加密的函数按次序存储,其中,N为大于一的自然数;加密方法选择单元,适于为每个待加密的函数选择对应的加密方法;加密单元,适于依次对N个待加密的函数进行加密,其中,对第一个待加密函数,以该待加密函数对应的加密方法进行加密;对第M个待加密函数,以该待加密函数对应的加密方法进行加密后,再以第M-1个函数所使用的所有加密方法,按所述第M-1个函数所使用加密方法的次序进行加密;其中,M为大于一的自然数。可选地,所述待加密函数预处理单元,适于将该N个待加密的函数按次序存储至可执行文件中的同一代码区段。可选地,所述待加密函数预处理单元,还适于获取该N个待加密的函数在所述可执行文件执行时被调用的先后顺序,使该N个待加密的函数的存储次序与该N个待加密的函数在所述可执行文件执行时被调用的先后顺序一致。可选地,该装置还包括:可执行文件转换单元,适于将所述可执行文件转换为二进制形式。可选地,该装置还包括:解密单元,适于向加固后的可执行文件添加解密逻辑。可选地,所述解密逻辑包括:与各待加密方法对应的解密方法。可选地,所述解密逻辑包括:在可执行文件被加载后,在需要调用所述代码区段中被加密的函数时,以该函数对应的解密方法对所述代码区段进行解密。可选地,所述可执行文件为安卓安装包中的可执行文件。可选地,所述装置还包括:解包单元,适于对安卓安装包进行解包,得到至少一个可执行文件;打包单元,适于将加固后的可执行文件打包到对应的安装包中。由上述可知,本专利技术的技术方案,将可执行文件中的多个待加密的函数按次序存储,在为每个函数选择对应的加密方法的基础上,在具体加密时,对每个函数按次序递进,使用不同层次的加密方法进行加密。该技术方案既能够选择较少的加密方法,还通过加密手段的复杂化使得得破解的可能性大大降低,对可执行文件进行加固的效率高,效果好。上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,而可依照说明书的内容予以实施,并且为了让本专利技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本专利技术的具体实施方式。附图说明通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本专利技术的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:图1示出了根据本专利技术一个实施例的对可执行文件进行加固的方法的流程示意图;图2示出了根据本专利技术一个实施例的对可执行文件进行加固的装置的结构示意图。具体实施方式下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。图1示出了根据本专利技术一个实施例的一种对可执行文件进行加固的方法的流程示意图,如图1所示,该方法包括:步骤S110,将可执行文件中的N个待加密的函数按次序存储,其中,N为大于一的自然数。步骤S120,为每个待加密的函数选择对应的加密方法。具体地,每个加密方法可以是一种加密算法或加密函数。步骤S130,依次对N个待加密的函数进行加密,其中,对第一个待加密函数,以该待加密函数对应的加密方法进行加密;对第M个待加密函数,以该待加密函数对应的加密方法进行加密后,再以第M-1个函数所使用的所有加密方法,按第M-1个函数所使用加密方法的次序进行加密;其中,M为大于一的自然数。例如,FUNC1、FUNC2、FUNC3为三个待加密的函数。FUNC1对应的加密函数为E1,FUNC2对应的加密函数为E2,FUNC3对应的加密函数为E3。那么在加密时:1)对FUNC1函数的函数体用加密函数E1进行加密:Encrypt_func1=E1(FUNC1_body);2)对FUNC2函数的函数体先用加密函数E2加密,再用加密函数E1加密:Encrypt_func2=E1(E2(FUNC2_body));3)对FUNC3函数的函数体先用加密函数E3加密,再用加密函数E2加密,最后用加密函数E1加密:Encrypt_func3=E1(E2(E3(FUNC3_body)));可见,图1所示的方法,将可执行文件中的多个待加密的函数按次序存储,在为每个函数选择对应的加密方法的基础上,在具体加密时,对每个函数按次序递进,使用不同层次的加密方法进行加密。该技术方案既能够选择较少的加密方法,还通过加密手段的复杂化使得得破解的可能性大大降低,对可执行文件进行加固的效率高,效果好。在本专利技术的一个实施例中,上述方法中,将可执行文件中的N个待加密的函数按次序存储包括:将该N个待加密的函数按次序存储至可执行文件中的同一代码区段。例如上面的三个函数FUNC1、FUNC2、FUNC3可以被存储到下面这样的section(代码区段)中:FUNC1_bodyFUNC2_bodyFUNC3_body而对这三个函数进行了如上述的加密后,sectio本文档来自技高网...
一种对可执行文件进行加固的方法和装置

【技术保护点】
一种对可执行文件进行加固的方法,其中,该方法包括:将可执行文件中的N个待加密的函数按次序存储,其中,N为大于一的自然数;为每个待加密的函数选择对应的加密方法;依次对N个待加密的函数进行加密,其中,对第一个待加密函数,以该待加密函数对应的加密方法进行加密;对第M个待加密函数,以该待加密函数对应的加密方法进行加密后,再以第M‑1个函数所使用的所有加密方法,按所述第M‑1个函数所使用加密方法的次序进行加密;其中,M为大于一的自然数。

【技术特征摘要】
1.一种对可执行文件进行加固的方法,其中,该方法包括:将可执行文件中的N个待加密的函数按次序存储,其中,N为大于一的自然数;为每个待加密的函数选择对应的加密方法;依次对N个待加密的函数进行加密,其中,对第一个待加密函数,以该待加密函数对应的加密方法进行加密;对第M个待加密函数,以该待加密函数对应的加密方法进行加密后,再以第M-1个函数所使用的所有加密方法,按所述第M-1个函数所使用加密方法的次序进行加密;其中,M为大于一的自然数。2.如权利要求1所述的方法,其中,所述将可执行文件中的N个待加密的函数按次序存储包括:将该N个待加密的函数按次序存储至可执行文件中的同一代码区段。3.如权利要求1所述的方法,其中,该方法还包括:获取该N个待加密的函数在所述可执行文件执行时被调用的先后顺序,使该N个待加密的函数的存储次序与该N个待加密的函数在所述可执行文件执行时被调用的先后顺序一致。4.如权利要求1所述的方法,其中,该方法在所有步骤之前还包括:将所述可执行文件转换为二进制形式。5.如权利要求1所述的方法,其中,该方法还包括:向加固后的可执行文件添加解密逻辑。6...

【专利技术属性】
技术研发人员:吴乐
申请(专利权)人:北京奇虎科技有限公司
类型:发明
国别省市:北京,11

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

1