一种移动平台应用软件的加固方法

文档序号:6516590阅读:203来源:国知局
一种移动平台应用软件的加固方法
【专利摘要】本发明揭示了一种定制非法指令和类加载器的软件加固方法及其运行方法,针对Android平台Dalvik指令集固定且公开的特点,自定义并定期更新若干非法指令,这些指令都不是Dalvik虚拟机支持的指令;通过在可执行文件中插入自定义非法指令的方式使常见Android逆向工程工作崩溃,保护代码安全。在程序运行时,优先调用远端加载的类加载器到设备内存中,过滤非法指令保证程序正常运行。应用本发明软件加固的技术方案:通过定制非法指令和类加载器对应用软件进行改造和运行方式调整,在保证应用软件正常运行的前提下能有效抵御黑客的逆向工程,保证应用软件代码安全,大幅提高移动平台设备使用的安全性能。
【专利说明】—种移动平台应用软件的加固方法
【技术领域】
[0001]本发明设计一种定制非法指令和类加载器的软件加固方法,综合利用软件编程技术、程序分析技术、网络服务技术加密解密技术及移动通讯技术实现,可用于对抗移动平台逆向工程分析、防止程序被反编译等黑客手段攻击,保护程序版权、保护用户应用安全。
【背景技术】
[0002]在计算机技术中,“指令”是由指令集架构定义的单个CPU操作。在更广泛的意义上,“指令”可以是任何可执行程序的元素的表述,例如字节码。在传统的构架上,指令包括一个操作码(opcode),它指定了要进行什么样的操作。例如“将存储器中的内容与寄存器中的内容相加”,和零个或者更多的操作数(operand)。操作数可能还包括寻址方式,它确定了操作数的含义。在超长指令字(VLIW)构架中(包括很多微指令(miciOcode)构架)多个并发的操作和操作数在一条单独的指令中被指定。指令的长度相差悬殊,从一些微控制器(microcontroller)中的4位(bit)到一些超长指令字系统中的几百位。大部分现代的个人计算机、大型计算机、超大型计算机中的处理器的指令尺寸在16到64位之间。在一些构架中,特别是RISC构架中,指令长度是固定的,通常与其构架的字长一致。在其它的构架中,指令有不同的长度,但通常是字节或者半个字的整数倍。构成程序的指令很少以它在机器内部的数值形式而直接的被使用;它们可以被程序员通过汇编语言加以表示,或者,更常见的,被编译器生成。
[0003]不同的运行环境都会有各自不同的指令集,例如常见的ARM指令集、X86指令集等。而非法指令就是当前运行环境下,指令集中不包含的指令。计算机执行到这里时将出现错误。
[0004]JVM本身包含了一个类加载器称为Bootstrap类加载器,和JVM 一样,Bootstrap类加载器是用本地代码实现的,它负责加载核心JavaClass (即所有java.*开头的类)。另外JVM还会提供两个类加载器,它们都是用Java语言编写的,由Bootstrap类加载器加载;其中Extension类加载器负责加载扩展的Javaclass (例如所有javax.*开头的类和存放在JRE的ext目录下的类),Application类加载器负责加载应用程序自身的类。当运行一个程序的时候,JVM启动,运行Bootstrap类加载器,该类加载器加载java核心API (Ext类加载器和App类加载器也在此时被加载),然后调用Ext类加载器加载扩展API,最后App类加载器加载CLASSPATH目录下定义的类,这就是一个程序最基本的加载流程。
[0005]似乎JVM自身的类加载器已经足够了,但创建自定义的类加载器依然尤为必要。因为JVM自带的类加载器只是懂得从本地文件系统加载标准的java class文件,如果编写自定义的类加载器,可以实现:1)在执行非置信代码之前,自动验证数字签名;2)动态地创建符合用户特定需要的定制化构建类;3)从特定的场所取得java class,例如数据库中。
[0006]现有移动平台上的应用软件数以十万计,除大量的游戏外,还有各种能提高人类生活品质、效率的功能化应用,更有于财务相关的电子支付应用等。迫于经济利益的诱惑,黑客对该些应用软件产生了巨大的兴趣,通过各种反编译工具,黑客能轻松掌握该些应用软件的设计思路进行破解或植入木马程序,无形中将使用该应用软件的用户的资金转移、造成经济损失,这也极大地有碍社会的和谐发展。为此如何防范该些应用软件被破解、提高其安全保障性能,是当前软件设计方面需要解决的重要问题。而上述关于类加载器的说明,便给本发明技术方案的产生提供了技术背景。

【发明内容】

[0007]本发明针对现有技术的窘境,提出了一种移动平台应用软件的加固方法,彻底杜绝应用软件被反编译破解,提高软件应用实施的安全性。
[0008]本发明的上述目的得以实现的技术解决方案是,一种移动平台应用软件的加固方法,面向包括智能手机、平板电脑的移动平台的应用软件做加固处理,其特征在于:所述加固方法包括应用软件改造、类加载器定制和应用软件还原运行三部分,其中所述应用软件改造为采用二进制级别的代码注入方法将会引起软件逆向工程工具崩溃或中止运行的非法代码插入应用软件的可执行功能代码中;所述类加载器定制为制作面向应用软件并对应用软件改造中所插入的非法代码滤除的类加载器,且所述类加载器存云端服务器;所述应用软件还原运行为移动平台先从云端服务器将所定制的类加载器载入内存中,并滤除可执行功能代码中被插入的非法代码后再正常运行应用软件。
[0009]进一步地,所述非法代码至少为会引起软件逆向工程工具崩溃或中止运行的非法指令、代码或程序。
[0010]进一步地,将相对应的非法代码和类加载器保持同步并定期更新,所述应用软件还原运行过程中动态载入类加载器。
[0011]进一步地,应用软件改造中所述非法代码插入应用软件核心的可执行功能代码中,在应用软件运行前必须载入类加载器对非法代码滤除。
[0012]进一步地,对应Android平台,所述非法代码为非Dalvik指令集中所包含的非法指令。
[0013]应用本发明软件加固的技术方案:通过定制非法指令和类加载器对应用软件进行改造和运行方式调整,在保证应用软件正常运行的前提下能有效抵御黑客的逆向工程,保证应用软件代码安全,大幅提高移动平台设备使用的安全性能。
【专利附图】

【附图说明】
[0014]图1为本发明应用软件加固方法实施的系统框图。
[0015]图2为本发明应用软件加固方法的流程示意图。
【具体实施方式】
[0016]本发明针对现有移动平台应用软件缺乏保护、易于被反向破解的不良局面,提出了一种移动平台应用软件的加固方法,彻底杜绝应用软件被反编译破解,提高移动平台及其软件应用实施的安全性。
[0017]本发明加固方法的实现有赖于移动平台之外的云端服务器和安全体系,它面向包括智能手机、平板电脑等在内的移动平台所用应用软件做加固处理,以达到有效防止通过逆向工程而被破解。如图1所示的系统框图可见:该方法依旧在原有正常的应用软件和对应的JVM或Dalvik虚拟机上实现,所不同的是分别对应用软件本身和应用软件的运行方式分别进行改造,并增加运行环境与云端服务器之间的互动,这样既能达到不影响应用软件的正常运行,又能提高其固化性能。
[0018]该加固方法包括应用软件改造、类加载器定制和应用软件还原运行三部分。如图2所示,其中应用软件改造为采用二进制级别的代码注入方法将会引起软件逆向工程工具崩溃或中止运行的非法代码插入应用软件的可执行功能代码中。这里所谓的非法代码至少为会引起软件逆向工程工具崩溃或中止运行的非法指令、代码或程序,根据改造工程的复杂程度可任意选取,但较常用、也较简便的手段便是直接使用当前运行环境下不包含在指令集中、相对的非法指令。(因为指令集与运行环境有着相互对应的关系,某些指令对于一种运行环境为可执行指令,但换了一种运行环境便成为非法指令)。故此处,只需采用对应应用软件运行环境不被接受的指令即可。
[0019]类加载器定制为制作面向应用软件并对应用软件改造中所插入的非法代码滤除的类加载器,且类加载器存云端服务器。这部分主要用于对前述应用软件中插入的非法指令进行滤除,还原应用程序的正常可执行功能代码。
[0020]应用软件还原运行为移动平台先从云端服务器将所定制的类加载器载入内存中,并滤除可执行功能代码中被插入的非法代码后再正常运行应用软件。该过程直接在内存中进行,因为能在内存中进行的软件处理属于应用软件的前期运行过程,是极难被攻破的。因此能更完善地实现本发明的软件加固方法
在实际应用中,能够将相对应的非法代码和类加载器保持同步并定期更新,应用软件还原运行过程中动态载入类加载器,清除同样更新、匹配的非法代码,便可进一步保障所定制的非法代码不被黑客所掌握。可见该非法代码(或称之为非法指令集单元)是一个独立的、自定义的、定期变化的多变集合,这方面对于抵御黑客的作用十分显著。
[0021]通常情况下,在进行非法代码插入的过程中,非法代码的插入是缺乏指向性的,往往会插入到应用软件核心的可执行功能代码中,在应用软件运行前必须载入类加载器对非法代码完全滤除,才能有效保障应用软件的正常功能实现。但如果随着二进制级别的代码注入手段的不断提升,当非法代码的插入具有导向可控性能时,其所插入的非法代码只需避开核心的可执行功能代码,即使不采用类加载器进行还原处理,仍可保障应用软件的正常运行,只在被逆向工程时产生相应的抑制功效。
[0022]以Android平台为例,由于其Dalvik指令集固定且公开的特点,因此在自定义非法代码时只需选用非Dalvik指令集中所包含的非法指令即可,甚至工程师可以将“abcdefg”作为非法指令插入到可执行功能代码中,黑客进行逆向工程时当运行到此时便会中止(卡死);这样在定制类加载器时,只需满足能过滤掉标记为“abcdefg”的类,还原应用软件的正常功能。
[0023]除上例的自定义非法代码外,许多可使得逆向工程工具崩溃的循环垃圾程序等亦可适用于此,只需对应的类加载器能将其滤除即可。
[0024]综上所述可见,应用本发明软件加固的技术方案:通过定制非法指令和类加载器对应用软件进行改造和运行方式调整,在保证应用软件正常运行的前提下能有效抵御黑客的逆向工程,保证应用软件代码安全,大幅提高移动平台设备使用的安全性能。
【权利要求】
1.一种移动平台应用软件的加固方法,面向包括智能手机、平板电脑的移动平台的应用软件做加固处理,其特征在于:所述加固方法包括应用软件改造、类加载器定制和应用软件还原运行三部分,其中所述应用软件改造为采用二进制级别的代码注入方法将会引起软件逆向工程工具崩溃或中止运行的非法代码插入应用软件的可执行功能代码中;所述类加载器定制为制作面向应用软件并对应用软件改造中所插入的非法代码滤除的类加载器,且所述类加载器存云端服务器;所述应用软件还原运行为移动平台先从云端服务器将所定制的类加载器载入内存中,并滤除可执行功能代码中被插入的非法代码后再正常运行应用软件。
2.根据权利要求1所述移动平台应用软件的加固方法,其特征在于:所述非法代码至少为会引起软件逆向工程工具崩溃或中止运行的非法指令、代码或程序。
3.根据权利要求1所述移动平台应用软件的加固方法,其特征在于:将相对应的非法代码和类加载器保持同步并定期更新,所述应用软件还原运行过程中动态载入类加载器。
4.根据权利要求1所述移动平台应用软件的加固方法,其特征在于:应用软件改造中所述非法代码插入应用软件核心的可执行功能代码中,在应用软件运行前必须载入类加载器对非法代码滤除。
5.根据权利要求1所述移动平台应用软件的加固方法,其特征在于,对应Android平台,所述非法代码为非Dalvik指令集中所包含的非法指令。
【文档编号】G06F21/14GK103544415SQ201310509932
【公开日】2014年1月29日 申请日期:2013年10月25日 优先权日:2013年10月25日
【发明者】汪德嘉, 宋超 申请人:苏州通付盾信息技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1