基于art模式的软件加固方法及装置的制造方法
【技术领域】
[0001]本发明涉及应用软件及数据的安全领域,尤其涉及一种基于ART模式的软件加固方法及装置。
【背景技术】
[0002]随着安卓系统的普及,伴随安卓系统的应用也层出不穷。安卓系统为开源系统,应用的分发渠道众多,经常面临着病毒植入、广告替换、支付渠道篡改、钓鱼、信息劫持等风险,如何对应用进行有效的保护,是广大软件开发者一直致力于的难题。
[0003]ART模式是安卓在4.4版本中新增的一种应用运行模式,与传统的Dalvik模式不同,ART模式可以实现更为流畅的安卓系统体验,ART相对于Dalvik的一大变化是它不仅支持即时编译(JIT),而且还支持预先编译(Α0Τ)。在Dalvik环境下,应用程序每次运行,都需要先从字节码编译为机器代码才行。而ART环境下可以只编译一次,然后每次应用程序运行时,都可以直接执行编译好的机器代码。很好理解的是,ART模式的预先编译可以明显改善电池续航,因为应用程序每次运行时不用重复编译了,从而减少了对CPU的使用频率,降低能耗。但是,目前的软件加固方法都是基于安卓系统之前的Dalvik模式开发的软件保护系统,应用软件加固是用于Dalvik虚拟机上;随着安卓ART模式的推出,其编译环境、运行机制等都有了很大的变化,因此,亟需重新对ART模式下的应用软件进行软件加固的设计和实现。
【发明内容】
[0004]本发明提供一种基于ART模式的软件加固方法及装置,用于实现对ART模式下的软件进行加固,使攻击者难于获取到攻击软件的明文字节码,有效保护安卓应用软件的安全。
[0005]本发明提供一种基于ART模式的软件加固方法,包括:
[0006]运行二次加载dexclassloader函数,判断是否存在oat文件路径;
[0007]若存在,则根据所述oat文件路径在文件系统中调取密文oat文件;
[0008]将所述密文oat文件映射到内存系统中,对所述密文oat文件进行解密操作,得到解密后的明文oat文件,以运行所述明文oat文件对应的软件。
[0009]本发明还提供一种基于ART模式的软件加固装置,包括:
[0010]二次加载模块,用于运行二次加载dexclassloader函数,判断是否存在oat文件路径;
[0011 ]调取模块,用于当所述二次加载模块判断存在oat文件路径时,根据所述oat文件路径在文件系统中调取密文oat文件;
[0012]映射模块,用于将所述密文oat文件映射到内存系统中;
[0013]解密模块,用于对所述密文oat文件进行解密操作,得到解密后的明文oat文件,以运行所述明文oat文件对应的软件。
[0014]本发明提供一种基于ART模式的软件加固方法及装置,通过运行二次加载dexclassloader函数,判断是否存在oat文件路径;若存在,则根据该oat文件路径在文件系统中调取密文oat文件;并将密文oat文件映射到内存系统中,对该密文oat文件进行解密操作,得到解密后的明文oat文件,以运行所述明文oat文件对应的软件。从而实现在ART模式下对软件进行加固处理,使攻击者难于获取到攻击软件的明文字节码文件,有效保护安卓应用软件的安全。
【附图说明】
[0015]图1为本发明基于ART模式的软件加固方法的实施例一的流程示意图;
[0016]图2为本发明基于ART模式的软件加固方法的实施例二的流程示意图;
[0017]图3为本发明基于ART模式的软件加固装置的实施例一的结构示意图;
[0018]图4为本发明基于ART模式的软件加固装置的实施例二的结构示意图。
【具体实施方式】
[0019]图1为本发明基于ART模式的软件加固方法的实施例一的流程示意图,如图1所示,本实施例所述的基于ART模式的软件加固方法,包括:
[0020]步骤101、运行二次加载dexclassloader函数,判断是否存在oat文件路径。
[0021]步骤102、若存在oat文件路径,则根据该oat文件路径在文件系统中调取密文oat文件。
[0022]步骤103、将密文oat文件映射到内存系统中,对该密文oat文件进行解密操作,得到解密后的明文oat文件,以运行明文oat文件对应的软件。
[0023]具体的,本实施例的基于ART模式的软件加固方法可以应用于安装有安卓4.4版本以上,具有ART模式的终端(客户端设备)中,该终端包括:手机终端、平板电脑等。其中,ART模式的英文全称为:Android runtime,其是谷歌Android 4.4系统新增的一种应用运行模式,与传统的Dalvik模式不同,ART模式可以实现更为流畅的安卓系统体验。ART与Dalvik的虚拟机模式不同,外在的体现是两者使用了不同的库文件,一个是libart.so另一个则是libdvm.so。两个模式在ΑΡΚ (APK是Android Package的缩写,即安卓安装包)文件安装时采用的代码优化方式也不一样,Dalvik模式采用dexopt的代码优化方式;ART模式采用dexoat的代码优化方式。Google选择ART模式的原因是使应用在启动时更迅速,对内存RAM的占用少等。然而改进也是要有一些其他代价的,比如ART模式下,应用的安装时长会变长、对ROM的占用会变大。而上述问题的原因可以理解为进行ART模式下deX2oat操作的代码优化时间要比Dalvik模式下dex2opt操作的代码优化时间长。dex2oat会将dex字节码翻译成本地机器码,而deX2opt则是将dex字节码翻译成优化后的字节码,在APK文件运行时再转换成能运行的JIT cache ο对于软件加固而言,在ART模式下如果按照在Dalvik模式时的做法,在每次运行APK文件时,重新对dex字节码进行解密并且进行dex2opt代码优化则会产生两个难点问题,一是deX2oat优化时长过长,会导致应用运行的速度明显变慢,每次打开APK过于迟缓;二是deX2oat转化的难度不仅在于函数实现的复杂性,更在于要做到平台兼容性,就必须将代码转化的这一部分自行编程实现,而系统在实现这一部分的时候不同于Dalvik模式下的dexopt代码优化,用到了很多类,而类与类之间的关联性很大,调用层次深,因此很难做到自行编程实现。因此,针对ART模式的特点,采用上述步骤101到步骤103的技术方案,实现对软件的加固保护。
[0024]本实施例的基于ART模式的软件加固方法,通过运行二次加载dexclassloader函数,判断是否存在oat文件路径;若存在,则根据该oat文件路径在文件系统中调取密文oat文件;并将密文oat文件映射到内存系统中,对该密文oat文件进行解密操作,得到解密后的明文oat文件,以运行所述明文oat文件对应的软件。从而实现在ART模式下对软件进行加固处理,使攻击者难于获取到攻击软件的明文字节码文件,有效保护安卓应用软件的安全。
[0025]图2为本发明基于ART模式的软件加固方法的实施例二的流程示意图,如图2所示,本实施例在上述实施例所述的方法的基础上,包括如下步骤:
[0026]步骤201、运行二次加载dexclassloader函数,判断是否存在oat文件路径;若不存在,执行步骤202 ;若存在,执行步骤206。
[0027]步骤202、根据密文dex文件路径在文件系统中调取密文d