一种程序代码保护方法及装置的制造方法

文档序号:8543935阅读:163来源:国知局
一种程序代码保护方法及装置的制造方法
【技术领域】
[0001]本发明涉及计算机终端技术领域,具体涉及系统安全领域,尤其涉及一种程序代码保护方法及装置。
【背景技术】
[0002]Android是一个以Linux为基础的半开源操作系统,而Linux是一种自由和开放源码的类Unix操作系统,所以破解者很容易使用动态代码注入技术,破坏Android系统原始的代码逻辑,加入恶意代码逻辑,使得Android系统不能正常运行。

【发明内容】

[0003]有鉴于此,本发明实施例提供一种程序代码保护方法及装置,来解决以上【背景技术】部分提到的技术问题。
[0004]一方面,本发明实施例提供了一种程序代码保护方法,所述方法包括:
[0005]获取需要保护的程序代码以及用于加密所述需要保护的程序代码的密钥程序代码;
[0006]按照预定算法对所述密钥程序代码进行哈希计算,得到加密密钥;
[0007]利用所述加密密钥对所述需要保护的程序代码进行加密得到加密程序代码。
[0008]另一方面,本发明实施例还提出了一种程序代码保护装置,所述装置包括:
[0009]获取模块,用于获取需要保护的程序代码以及用于加密所述需要保护的程序代码的密钥程序代码;
[0010]哈希计算模块,用于按照预定算法对所述密钥程序代码进行哈希计算,得到加密密钥;
[0011]加密模块,用于利用所述加密密钥对所述需要保护的程序代码进行加密得到加密程序代码。
[0012]本发明实施例提出的程序代码保护方法和装置,在对需要保护的程序代码进行保护时,其加密密钥是通过对其他程序代码进行哈希计算得出的,即设计了一种对对象的依赖关系作为密钥加密对象,则依赖关系中任何一个环节被篡改,都无法解密出原始的对象,所以能够很好的保护需要保护的程序代码不被篡改。
【附图说明】
[0013]通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
[0014]图1是本发明实施例中一种程序代码保护方法的流程图;
[0015]图2是本发明实施例中一种程序代码保护方法的示意图;
[0016]图3是本发明实施例中一种实现加密程序代码的解密的流程图;
[0017]图4是本发明实施例中一种程序代码保护装置的组成框图;
[0018]图5是本发明实施例中另一种程序代码保护装置的组成框图;
[0019]图6是本发明实施例中另一种程序代码保护装置的组成框图;
[0020]图7是本发明实施例中另一种程序代码保护装置的组成框图。
【具体实施方式】
[0021]下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。
[0022]本发明实施例提供了一种程序代码保护方法,如图1所示,该方法包括:
[0023]101、获取需要保护的程序代码以及用于加密所述需要保护的程序代码的密钥程序代码。
[0024]其中,该密钥代码程序用于进行哈希计算获得加密需要保护的程序代码的加密、解密密钥,其可以为加密的程序代码也可以为没有加密(即不需要保护)的程序代码,本发明实施例对此不进行限制。该密钥程序代码可以为一个程序代码,也可以是多个程序代码,具体的本发明实施例对此不进行限制。
[0025]102、按照预定算法对所述密钥程序代码进行哈希计算,得到加密密钥。
[0026]其中,该密钥程序代码进行哈希计算的预定算法,可以为算法包括MD2、MD4、MD5和SHA-1中的任意种,本发明实施例对此不进行限制,任何一种现有的哈希计算方法都可以应用于本发明的实施例中。并且在进行加密和解密时,使用的可以是同一个算法,得出的加密密钥和解密密钥是相同的,即采用对称加密算法;当然也可以使用非对称加密算法,得出的加密密钥和解密密钥虽然不同,但是其是配对使用的。
[0027]103、利用所述加密密钥对所述需要保护的程序代码进行加密得到加密程序代码。
[0028]以下结合具体实例陈述一下程序代码保护方法,如图2所示,一段程序代码包含三个函数,每个函数对应一段程序代码块,该三个函数分别为A函数、B函数、C函数,原始程序代码块中要保护的程序代码是B函数,密钥程序代码为未保护的A函数和C函数。按照预定算法对A函数和C函数进行哈希计算,得到加密密钥;利用所述加密密钥对B函数进行加密得到加密程序代码。
[0029]进一步的,在对需要保护的程序代码进行加密后,在运行程序代码时,需要对加密的程序代码先进行解密,获得原始程序代码,之后再执行。但是由于计算加密密钥的密钥程序代码可能位于该加密程序代码的前面,也可能是后面,所以,为了能够在程序代码执行的时候,顺利获得加密程序代码的解密密钥,需要在在利用所述加密密钥对所述需要保护的程序代码进行加密得到加密程序代码的同时,设置获取解密密钥的地址链接,以便执行程序代码时,获取所述加密程序代码的解密密钥。
[0030]进一步的,基于上述地址链接的设置,在执行程序代码时,当执行到加密程序代码时,本发明提供一下的程序代码保护方法,以实现加密程序代码的解密,如图3所示,该方法包括:
[0031 ] 201、执行所述地址链接获取所述密钥程序代码。
[0032]202、按照预定算法对所述密钥程序代码进行哈希计算,得到解密密钥。
[0033]203、利用所述解密密钥对所述加密程序代码进行解密;若解密成功,则执行204 ;若解密不成功,则执行205。
[0034]其中,若解密成功,说明获取解密密钥相关的密钥程序代码没有被篡改过;若解密不成功,说明获取解密密钥相关的密钥程序代码已经被篡改过。
[0035]204、执行解密后的程序代码。
[0036]205、输出程序代码被篡改的信息提示。
[0037]其中,本发明实施例在进行程序代码被篡改的信息提示时,可以通过但不局限于以下的方式实现,该方式为以下形式的一种或任意种的组合,该形式包括:文字、声音、图形、视频。
[0038]基于图2描述的加密过程,当程序代码执行到加密后的B函数时,执行预先设置的地址链接获取A函数和C函数,按照预定算法对A函数和C函数进行哈希计算,得到解密密钥;利用解密密钥对加密的B函数进行解密;若恶意程序篡改了 A函数或者C函数的代码,则在按照预定算法对A函数和C函数进行哈希计算时,得到的解密密钥将有变化,则不能正常解密B函数密文,导致程序无法执行。所以只有当A与C代码块数据完整,没有被恶意程序篡改时,才可以正常执行B代码块。例如,在Android系统中,DEX文件将用SO文件的哈希计算得到的加密密钥进行加密,以密文形式存在,所以DEX数据无法篡改;S0文件的哈希会作为解密DEX文件的密钥。所以若篡改SO文件内容,则DEX将不能正常解密,导致DEX无法执行。
[0039]基于上述方法,本发明实施例还提供一种程序代码保护装置,如图4所示,该装置包括:
[0040]获
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1