一种针对安卓程序代码的加密方法技术

技术编号:14245910 阅读:91 留言:0更新日期:2016-12-22 02:00
本发明专利技术公开了一种针对安卓程序代码的加密方法,所述方法包括:在有加载需求时由服务器端根据加密算法对关键代码进行加密以生成加密代码,并将所述加密代码发送到客户端;所述客户端调用加载所述加密代码;当所述客户端运行完毕所述加密代码时删除所述加密代码。根据本发明专利技术的方法,关键代码不会长时间存于本地,大大降低了破译人员获取关键代码的可能性,使得关键代码的安全性得到有效提高。

【技术实现步骤摘要】

本专利技术涉及计算机软件
,具体说涉及一种针对安卓程序代码的加密方法
技术介绍
随着安卓(Android)操作系统的不断发展,Android系统的应用范围得到不断扩展。针对Android系统的应用程序也得到了极大的扩充,越来越多的Android程序被开发并投入应用。由于Android程序大部分由java代码编写,而反编译java代码难度很低。因此为了保护安卓应用程序的开发者以及使用者的合法权益,需要对Android程序的代码进行安全防护。在现有技术中,常用的代码安全防护方法是代码混淆。即使用无意义的变量和方法名来使程序晦涩难懂,减少程序的可读性,增加破译难度。但是在这种方法下程序代码依然有迹可循,只要花费一定时间仍然可以破解程序。进一步的,现有技术中还采用动态链接库的方式,将关键代码通过JNI技术移到动态链接库中,从而对关键代码实现加密保护。但是,针对这种方法,破解人员可通过反汇编动态链接库文件(后缀名为.so的文件)得到程序加密逻辑,从而破解关键代码。因此,为了进一步提高Android程序代码的防护安全程度,需要一种针对安卓程序代码的加密方法。
技术实现思路
为了进一步提高Android程序代码的防护安全程度,本专利技术提供了一种针对安卓程序代码的加密方法,所述方法包括:在有加载需求时由服务器端根据加密算法对关键代码进行加密以生成加密代码,并将所述加密代码发送到客户端;所述客户端调用加载所述加密代码;当所述客户端运行完毕所述加密代码时删除所述加密代码。在一实施例中,服务器端根据加密算法对关键代码进行加密以生成加密代码,其中,所述加密算法与所述客户端对应,在同一次加密交互周期中不得更换加密算法以及客户端。在一实施例中,服务器端根据加密算法对关键代码进行加密以生成加密代码,其中,针对不同的客户端采用不同的加密算法。在一实施例中,服务器端根据加密算法对关键代码进行加密以生成加密代码,其中,在每次发送所述加密算法前随机生成所述加密算法,每次发送都采用不同的加密算法。在一实施例中,在每次发送所述加密算法前随机生成所述加密算法,其中,所述服务器端以随机无意义的方式产生随机加密类和函数签名。在一实施例中,所述客户端调用加载所述加密代码,其中,所述客户端通过反射机制调用所述加密算法。在一实施例中,当所述客户端运行完毕所述加密代码时向所述服务器发送所述加密代码的运行结果。在一实施例中,当所述客户端运行完毕所述加密代码时向所述服务器发送所述加密代码的运行结果,其中,所述客户端对所述运行结果进行加密并将加密后的运行结果发送到所述服务器端。在一实施例中,当所述服务器端接收到所述运行结果后对其进行验证。在一实施例中,所述加密算法具有有效时间限制。根据本专利技术的方法,关键代码不会长时间存于本地,大大降低了破译人员获取关键代码的可能性,使得关键代码的安全性得到有效提高。本专利技术的其它特征或优点将在随后的说明书中阐述。并且,本专利技术的部分特征或优点将通过说明书而变得显而易见,或者通过实施本专利技术而被了解。本专利技术的目的和部分优点可通过在说明书、权利要求书以及附图中所特别指出的步骤来实现或获得。附图说明附图用来提供对本专利技术的进一步理解,并且构成说明书的一部分,与本专利技术的实施例共同用于解释本专利技术,并不构成对本专利技术的限制。在附图中:图1是根据本专利技术一实施例的方法流程图;图2是根据本专利技术一实施例的部分方法流程图。具体实施方式以下将结合附图及实施例来详细说明本专利技术的实施方式,借此本专利技术的实施人员可以充分理解本专利技术如何应用技术手段来解决技术问题,并达成技术效果的实现过程并依据上述实现过程具体实施本专利技术。需要说明的是,只要不构成冲突,本专利技术中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本专利技术的保护范围之内。随着Android系统的不断发展,越来越多的Android程序被开发并投入应用。由于Android程序大部分由java代码编写,而反编译java代码难度很低。因此为了保护安卓应用程序的开发者以及使用者的合法权益,需要对Android程序的代码进行安全防护。在现有技术中,常用的代码安全防护方法是代码混淆。即使用无意义的变量和方法名来使程序晦涩难懂,减少程序的可读性,增加破译难度。但是在这种方法下程序代码依然有迹可循,只要花费一定时间仍然可以破解程序。进一步的,现有技术中还采用动态链接库的方式,将关键代码通过JNI技术移到动态链接库中,从而对关键代码实现加密保护。但是,针对这种方法,破解人员可通过反汇编动态链接库文件(后缀名为.so的文件)得到程序加密逻辑,从而破解关键代码。为了进一步提高Android程序代码的防护安全程度,本专利技术提出了一种针对安卓程序代码的加密方法。具体的,针对Android端的本地代码(硬代码)在安全防护方面的缺点,在本专利技术一实施例中,基于Android动态加载技术,不将加密的关键代码存放在本地,在有关键代码加载(执行)需求时:由服务器端根据加密算法对关键代码进行加密以生成加密代码,并将加密代码发送到客户端;客户端调用加载加密代码;当客户端运行完毕加密代码时删除加密代码。在整个流程中,加密代码(加密的关键代码)的存储位置主要在服务器。客户端只在需要加载关键代码时才获得加密代码(加密的关键代码),在其他时刻客户端并不保存关键代码。这使得关键代码的安全度大大提高。进一步的,关键代码以加密方式传输,并且,加密算法也是来自与服务器端。这样就防止了破解者截获传输数据从而获取关键代码的可能性。接下来基于附图详细描述本专利技术一实施例的具体执行流程。附图的流程图中示出的步骤可以在包含诸如一组计算机可执行指令的计算机系统中执行。虽然在流程图中示出了各步骤的逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。在一实施例中,如图1所示,在有关键代码加载需求时由客户端向服务器端发送加载请求(步骤S110);服务器端接收加载请求(步骤S120);然后根据加密算法对客户端需要加载的关键代码进行加密以生成加密代码(步骤S121);服务器端将加密代码发送到客户端(步骤S122);客户端接收加密代码(步骤S132)。客户端接收到加密代码后加载运行(调用)加密代码以执行预期的操作(步骤S140)。具体的,客户端通过动态加载技术将加密代码加载到虚拟机中执行。最后,当客户端运行完毕加密代码时,删除客户端上的所有的加密代码(步骤S160)。这样,加密代码就不会长时间存于本地,大大降低了破译人员获取加密代码的可能性,使得关键代码的安全性得到有效提高。进一步的,在步骤S121中,服务器端用于加密关键代码的加密算法与提出加密请求客户端对应,在同一次加密交互周期中不得更换加密算法以及客户端。这样就维持了整个加密周期的加密算法匹配,避免了由于数据发送错误造成的关键代码外流。进一步的,在步骤S121中,针对不同的客户端采用不同的加密算法。避免多个客户端采用同一加密算法,这样在单一客户端数据外泄时不会影响其他客户端,从而降低了关键代码被解密的可能性。进一步的,虽然本专利技术一实施例中通过动态加载技术保证了加密代码不会长时间存在于本地,但如果破译人员发现了该加密手段,并在程序运行中将加密代码获取(pull)到本地,经过研究后仍然有破译的风本文档来自技高网...
一种针对安卓程序代码的加密方法

【技术保护点】
一种针对安卓程序代码的加密方法,其特征在于,所述方法包括:在有加载需求时由服务器端根据加密算法对关键代码进行加密以生成加密代码,并将所述加密代码发送到客户端;所述客户端调用加载所述加密代码;当所述客户端运行完毕所述加密代码时删除所述加密代码。

【技术特征摘要】
1.一种针对安卓程序代码的加密方法,其特征在于,所述方法包括:在有加载需求时由服务器端根据加密算法对关键代码进行加密以生成加密代码,并将所述加密代码发送到客户端;所述客户端调用加载所述加密代码;当所述客户端运行完毕所述加密代码时删除所述加密代码。2.根据权利要求1所述的方法,其特征在于,服务器端根据加密算法对关键代码进行加密以生成加密代码,其中,所述加密算法与所述客户端对应,在同一次加密交互周期中不得更换加密算法以及客户端。3.根据权利要求2所述的方法,其特征在于,服务器端根据加密算法对关键代码进行加密以生成加密代码,其中,针对不同的客户端采用不同的加密算法。4.根据权利要求2所述的方法,其特征在于,服务器端根据加密算法对关键代码进行加密以生成加密代码,其中,在每次发送所述加密算法前随机生成所述加密算法,每次发送都采用不同的加密算法。5.根据权利要求4所...

【专利技术属性】
技术研发人员:卞佳丽邝坚李凤民李俊晨卞光宇宋松
申请(专利权)人:北京邮电大学中国石油天然气股份有限公司华北油田分公司
类型:发明
国别省市:北京;11

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

1