[发明专利]结合动态加载和函数Native化的DEX保护方法有效
申请号: | 201810235689.4 | 申请日: | 2018-03-21 |
公开(公告)号: | CN108491235B | 公开(公告)日: | 2021-03-30 |
发明(设计)人: | 潘丽敏;袁晓筱;罗森林;尚海;张笈 | 申请(专利权)人: | 北京理工大学 |
主分类号: | G06F9/445 | 分类号: | G06F9/445;G06F8/53 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 100081 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 结合 动态 加载 函数 native dex 保护 方法 | ||
本发明涉及结合动态加载和函数Native化的DEX保护方法,属于计算机与信息科学技术领域中Android平台APP加固技术的一种。本发明第一步对应用的APK文件进行加固修改,加固过程首先通过apktool工具反编译应用APK文件,获取AndroidManifest.xml文件,修改应用启动入口,然后利用输入的待保护方法列表,生成植入代码,并植入原始DEX文件反编译得到的smali文件,重新生成DEX文件并重构,最后对DEX文件加密,输出得.jar,并重新打包生成APK。本发明第二步在APP运行过程中修改进程内存,首先启动壳DEX,运行植入的启动代码对原始DEX文件加密和动态加载,并重定向被保护的方法,接着,在函数调用时执行自定义的代码恢复被调用方法,调用原始函数,完成函数调用。
技术领域
本发明涉及结合动态加载和函数Native化的DEX保护方法,属于计算机与信息科学技术领域。
背景技术
Android APP的核心业务逻辑通过Java实现,最终被编译成了DEX文件。DEX的安全问题是APP安全的核心,未加固的DEX文件不具备自我保护能力,需要针对性地对DEX进行保护,继而保证APP的安全性。本发明提出结合动态加载和函数Native化的DEX保护方法,使Java函数在内存中始终为Native形式,对抗动态恢复和动态脱壳攻击。
针对DEX文件的保护方法需要解决的基本问题是:保护Java函数在内存中的信息,避免DEX容易受到动态恢复和动态脱壳攻击。综观现有的DEX文件保护方法,通常使用方法可归为四类:
1.基于代码混淆的DEX保护方法
代码混淆技术是相对通用和成熟的方法,随着混淆技术的发展,已经出现了多个实用的混淆工具。其中包括针对Java源码的混淆工具,如Smardec公司的Allatori,针对Android程序的混淆工具,如GuardSquare公司的ProGuard,以及它的增强版DexGuard和针对DEX文件的混淆工具,如AIRO等。
代码混淆技术虽然可以降低代码可读性,提高逆向分析的难度,但是攻击者仍然可以直接获取源码,也不影响动态调试的流程,而且存在着混淆失败的风险,给APP新增漏洞,因此代码混淆只是DEX保护初级的保护方案。
2.基于动态加载的DEX保护方法
基于动态加载的DEX保护方法,通过对DEX文件整体加密,并将加密后的DEX移动到其他目录,然后在APK文件的根目录下加入壳DEX。当APP启动时,系统加载壳DEX,壳DEX解密并动态加载DEX文件。这种方法将DEX文件作为一个整体进行加载,加载到内存中的DEX文件是完整的。这种保护方法对内存dump等动态逆向方法的防护作用很小。
3.基于Java函数动态恢复的DEX保护方法
基于Java函数动态恢复的保护方法是更深层次的保护方法。以Java函数为基本单位进行DEX保护。目前国内大部分公司采取这样的方法,包括娜迦、腾讯乐固、梆梆、360、爱加密等。方法有效改进了基于动态加载的DEX保护方法在内存中的完整性问题。如梆梆的加固方法首先通过壳DEX去动态加载原始的DEX文件,但DEX文件在内存中是不完整的,部分函数的代码被剥离。该方法Hook了dvmResolveClass函数,当类被加载时,该函数被执行,此时对类中的被抽取的代码进行还原,填充Method结构体,完成动态恢复的过程。同时也保证了DEX文件的不完整性。
对于Java函数动态恢复的方法,内存中的DEX文件是不完整的。经过动态恢复的函数,虽然其在DEX文件中被描述是Native方法,但是其在内存中已经被还原成一个Java函数。可以通过遍历class_data_item中所有类的所有函数,并获取该函数在内存中的Method结构体信息,比较Method结构体对函数的描述和DEX文件对函数的描述,如果不一致,以Method结构体为准。这样可以完成对已经加载过的类的函数进行恢复。
4.基于虚拟机保护的DEX保护方法
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京理工大学,未经北京理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810235689.4/2.html,转载请声明来源钻瓜专利网。