《一种程序代码保护方法及装置.pdf》由会员分享,可在线阅读,更多相关《一种程序代码保护方法及装置.pdf(11页完整版)》请在专利查询网上搜索。
本发明公开了一种程序代码保护方法及装置,计算机终端技术领域,解决了程序代码容易被篡改的问题。本发明的主要方法包括:获取需要保护的程序代码以及用于加密所述需要保护的程序代码的密钥程序代码;按照预定算法对所述密钥程序代码进行哈希计算,得到加密密钥;利用所述加密密钥对所述需要保护的程序代码进行加密得到加密程序代码。本发明主要用于程序代码防篡改的过程中。。
CN201410064972.7
2014.02.25
CN104866738A
2015.08.26
授权
有权
授权|||实质审查的生效IPC(主分类):G06F 21/12申请日:20140225|||公开
G06F21/12(2013.01)I; G06F21/56(2013.01)I; G06F21/60(2013.01)I
G06F21/12
北京娜迦信息科技发展有限公司
阎文斌
100084北京市海淀区中关村东路18号1号楼11层C-1208-010室
北京英赛嘉华知识产权代理有限责任公司11204
余朦; 王艳春
本发明公开了一种程序代码保护方法及装置,计算机终端技术领域,解决了程序代码容易被篡改的问题。本发明的主要方法包括:获取需要保护的程序代码以及用于加密所述需要保护的程序代码的密钥程序代码;按照预定算法对所述密钥程序代码进行哈希计算,得到加密密钥;利用所述加密密钥对所述需要保护的程序代码进行加密得到加密程序代码。本发明主要用于程序代码防篡改的过程中。
权利要求书1. 一种程序代码保护方法,其特征在于,所述方法包括:获取需要保护的程序代码以及用于加密所述需要保护的程序代码的密钥程序代码;按照预定算法对所述密钥程序代码进行哈希计算,得到加密密钥;利用所述加密密钥对所述需要保护的程序代码进行加密得到加密程序代码。2. 根据权利要求1所述的程序代码保护方法,其特征在于,在利用所述加密密钥对所述需要保护的程序代码进行加密得到加密程序代码的同时,还包括:设置获取解密密钥的地址链接,以便执行程序代码时,获取所述加密程序代码的解密密钥。3. 根据权利要求2所述的程序代码保护方法,其特征在于,当程序代码执行到所述加密程序代码处时,还包括:执行所述地址链接获取所述密钥程序代码;按照预定算法对所述密钥程序代码进行哈希计算,得到解密密钥;利用所述解密密钥对所述加密程序代码进行解密;若解密成功,则执行解密后的程序代码。4. 根据权利要求3所述的程序代码保护方法,其特征在于,还包括:若解密不成功,则输出程序代码被篡改的信息提示。5. 根据权利要求4所述的程序代码保护方法,其特征在于,所述信息提示可以为以下形式的一种或任意种的组合,该形式包括:文字、声音、图形、视频。6. 一种程序代码保护装置,其特征在于,所述装置包括:获取模块,用于获取需要保护的程序代码以及用于加密所述需要保护的程序代码的密钥程序代码;哈希计算模块,用于按照预定算法对所述密钥程序代码进行哈希计算,得到加密密钥;加密模块,用于利用所述加密密钥对所述需要保护的程序代码进行加密得到加密程序代码。7. 根据权利要求6所述的程序代码保护装置,其特征在于,还包括:设置模块,用于在所述加密模块利用所述加密密钥对所述需要保护的程序代码进行加密得到加密程序代码的同时,设置获取解密密钥的地址链接,以便执行程序代码时,获取所述加密程序代码的解密密钥。8. 根据权利要求7所述的程序代码保护装置,其特征在于,还包括:指令执行模块,用于当程序代码执行到所述加密程序代码处时,执行所述地址链接获取所述密钥程序代码;所述哈希计算模块还用于,按照预定算法对所述密钥程序代码进行哈希计算,得到解密密钥;解密模块,用于利用所述解密密钥对所述加密程序代码进行解密;程序代码执行模块,用于在所述解密模块对所述加密程序代码解密成功时,执行解密后的程序代码。9. 根据权利要求8所述的程序代码保护装置,其特征在于,还包括:信息输出模块,用于在所述解密模块对所述加密程序代码解密不成功时,输出程序代码被篡改的信息提示。10. 根据权利要求9所述的程序代码保护装置,其特征在于,所述信息提示可以为以下形式的一种或任意种的组合,该形式包括:文字、声音、图形、 视频。
说明书一种程序代码保护方法及装置 技术领域 本发明涉及计算机终端技术领域,具体涉及系统安全领域,尤其涉及一种程序代码保护方法及装置。 背景技术 Android是一个以Linux为基础的半开源操作系统,而Linux是一种自由和开放源码的类Unix操作系统,所以破解者很容易使用动态代码注入技术,破坏Android系统原始的代码逻辑,加入恶意代码逻辑,使得Android系统不能正常运行。 发明内容 有鉴于此,本发明实施例提供一种程序代码保护方法及装置,来解决以上背景技术部分提到的技术问题。 一方面,本发明实施例提供了一种程序代码保护方法,所述方法包括: 获取需要保护的程序代码以及用于加密所述需要保护的程序代码的密钥程序代码; 按照预定算法对所述密钥程序代码进行哈希计算,得到加密密钥; 利用所述加密密钥对所述需要保护的程序代码进行加密得到加密程序代码。 另一方面,本发明实施例还提出了一种程序代码保护装置,所述装置包括: 获取模块,用于获取需要保护的程序代码以及用于加密所述需要保护的程序代码的密钥程序代码; 哈希计算模块,用于按照预定算法对所述密钥程序代码进行哈希计算,得 到加密密钥; 加密模块,用于利用所述加密密钥对所述需要保护的程序代码进行加密得到加密程序代码。 本发明实施例提出的程序代码保护方法和装置,在对需要保护的程序代码进行保护时,其加密密钥是通过对其他程序代码进行哈希计算得出的,即设计了一种对对象的依赖关系作为密钥加密对象,则依赖关系中任何一个环节被篡改,都无法解密出原始的对象,所以能够很好的保护需要保护的程序代码不被篡改。 附图说明 通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显: 图1是本发明实施例中一种程序代码保护方法的流程图; 图2是本发明实施例中一种程序代码保护方法的示意图; 图3是本发明实施例中一种实现加密程序代码的解密的流程图; 图4是本发明实施例中一种程序代码保护装置的组成框图; 图5是本发明实施例中另一种程序代码保护装置的组成框图; 图6是本发明实施例中另一种程序代码保护装置的组成框图; 图7是本发明实施例中另一种程序代码保护装置的组成框图。 具体实施方式 下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。 本发明实施例提供了一种程序代码保护方法,如图1所示,该方法包括: 101、获取需要保护的程序代码以及用于加密所述需要保护的程序代码的密钥程序代码。 其中,该密钥代码程序用于进行哈希计算获得加密需要保护的程序代码的加密、解密密钥,其可以为加密的程序代码也可以为没有加密(即不需要保护)的程序代码,本发明实施例对此不进行限制。该密钥程序代码可以为一个程序代码,也可以是多个程序代码,具体的本发明实施例对此不进行限制。 102、按照预定算法对所述密钥程序代码进行哈希计算,得到加密密钥。 其中,该密钥程序代码进行哈希计算的预定算法,可以为算法包括MD2、MD4、MD5和SHA-1中的任意种,本发明实施例对此不进行限制,任何一种现有的哈希计算方法都可以应用于本发明的实施例中。并且在进行加密和解密时,使用的可以是同一个算法,得出的加密密钥和解密密钥是相同的,即采用对称加密算法;当然也可以使用非对称加密算法,得出的加密密钥和解密密钥虽然不同,但是其是配对使用的。 103、利用所述加密密钥对所述需要保护的程序代码进行加密得到加密程序代码。 以下结合具体实例陈述一下程序代码保护方法,如图2所示,一段程序代码包含三个函数,每个函数对应一段程序代码块,该三个函数分别为A函数、B函数、C函数,原始程序代码块中要保护的程序代码是B函数,密钥程序代码为未保护的A函数和C函数。按照预定算法对A函数和C函数进行哈希计算,得到加密密钥;利用所述加密密钥对B函数进行加密得到加密程序代码。 进一步的,在对需要保护的程序代码进行加密后,在运行程序代码时,需要对加密的程序代码先进行解密,获得原始程序代码,之后再执行。但是由于 计算加密密钥的密钥程序代码可能位于该加密程序代码的前面,也可能是后面,所以,为了能够在程序代码执行的时候,顺利获得加密程序代码的解密密钥,需要在在利用所述加密密钥对所述需要保护的程序代码进行加密得到加密程序代码的同时,设置获取解密密钥的地址链接,以便执行程序代码时,获取所述加密程序代码的解密密钥。 进一步的,基于上述地址链接的设置,在执行程序代码时,当执行到加密程序代码时,本发明提供一下的程序代码保护方法,以实现加密程序代码的解密,如图3所示,该方法包括: 201、执行所述地址链接获取所述密钥程序代码。 202、按照预定算法对所述密钥程序代码进行哈希计算,得到解密密钥。 203、利用所述解密密钥对所述加密程序代码进行解密;若解密成功,则执行204;若解密不成功,则执行205。 其中,若解密成功,说明获取解密密钥相关的密钥程序代码没有被篡改过;若解密不成功,说明获取解密密钥相关的密钥程序代码已经被篡改过。 204、执行解密后的程序代码。 205、输出程序代码被篡改的信息提示。 其中,本发明实施例在进行程序代码被篡改的信息提示时,可以通过但不局限于以下的方式实现,该方式为以下形式的一种或任意种的组合,该形式包括:文字、声音、图形、视频。 基于图2描述的加密过程,当程序代码执行到加密后的B函数时,执行预先设置的地址链接获取A函数和C函数,按照预定算法对A函数和C函数进行哈希计算,得到解密密钥;利用解密密钥对加密的B函数进行解密;若恶意程序篡改了A函数或者C函数的代码,则在按照预定算法对A函数和C函数进行 哈希计算时,得到的解密密钥将有变化,则不能正常解密B函数密文,导致程序无法执行。所以只有当A与C代码块数据完整,没有被恶意程序篡改时,才可以正常执行B代码块。例如,在Android系统中,DEX文件将用SO文件的哈希计算得到的加密密钥进行加密,以密文形式存在,所以DEX数据无法篡改;SO文件的哈希会作为解密DEX文件的密钥。所以若篡改SO文件内容,则DEX将不能正常解密,导致DEX无法执行。 基于上述方法,本发明实施例还提供一种程序代码保护装置,如图4所示,该装置包括: 获取模块31,用于获取需要保护的程序代码以及用于加密所述需要保护的程序代码的密钥程序代码。其中,该密钥代码程序用于进行哈希计算获得加密需要保护的程序代码的加密、解密密钥,其可以为加密的程序代码也可以为没有加密(即不需要保护)的程序代码,本发明实施例对此不进行限制。该密钥程序代码可以为一个程序代码,也可以是多个程序代码,具体的本发明实施例对此不进行限制。 哈希计算模块32,用于按照预定算法对所述密钥程序代码进行哈希计算,得到加密密钥。其中,对该密钥程序代码进行哈希计算的预定算法,本发明实施例对此不进行限制,任何一种现有的哈希计算方法都可以应用于本发明的实施例中。并且在进行加密和解密时,使用的可以是同一个算法,得出的加密密钥和解密密钥是相同的,即采用对称加密算法;当然也可以使用非对称加密算法,得出的加密密钥和解密密钥虽然不同,但是其是配对使用的。 加密模块33,用于利用所述加密密钥对所述需要保护的程序代码进行加密得到加密程序代码。 进一步的,在对需要保护的程序代码进行加密后,在运行程序代码时,需 要对加密的程序代码先进行解密,获得原始程序代码,之后再执行。但是由于计算加密密钥的密钥程序代码可能位于该加密程序代码的前面,也可能是后面,所以,为了能够在程序代码执行的时候,顺利获得加密程序代码的解密密钥,需要在在利用所述加密密钥对所述需要保护的程序代码进行加密得到加密程序代码的同时,还需要设置获得密钥程序代码的指令,如图5所示,该装置还包括: 设置模块34,用于在所述加密模块33利用所述加密密钥对所述需要保护的程序代码进行加密得到加密程序代码的同时,设置获取解密密钥的地址链接,以便执行程序代码时,获取所述加密程序代码的解密密钥。 进一步的,如图6所示,该装置还包括: 指令执行模块35,用于当程序代码执行到所述加密程序代码处时,执行所述地址链接获取所述密钥程序代码。 所述哈希计算模块32还用于,按照预定算法对所述密钥程序代码进行哈希计算,得到解密密钥。 解密模块36,用于利用所述解密密钥对所述加密程序代码进行解密。 程序代码执行模块37,用于在所述解密模块36对所述加密程序代码解密成功时,执行解密后的程序代码。 进一步的,如图7所示,该装置还包括: 信息输出模块38,用于在所述解密模块36对所述加密程序代码解密不成功时,输出程序代码被篡改的信息提示。其中,本发明实施例在进行程序代码被篡改的信息提示时,可以通过但不局限于以下的方式实现,该方式为以下形式的一种或任意种的组合,该形式包括:文字、声音、图形、视频。 本发明实施例提出的程序代码保护方法和装置,在对需要保护的程序代码 进行保护时,其加密、解密密钥是通过对其他程序代码进行哈希计算得出的,即设计了一种对对象的依赖关系作为密钥加密对象,则依赖关系中任何一个环节被篡改,都无法解密出原始的对象,所以能够很好的保护需要保护的程序代码不被篡改。 并且,本发明实施例还能很好的检测程序代码是否被篡改,若已经被篡改,则会输出提示信息,告知用户获知设备维护者及时的进行处理。 以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
下载文档到电脑,查找使用更方便
30 金币 0人已下载
还可以输入200字符
暂无评论,赶快抢占沙发吧。
copyright@ 2017-2018 zhuanlichaxun.net网站版权所有经营许可证编号:粤ICP备2021068784号-1