一种安卓加固插件的逆向处理方法技术

技术编号:15501432 阅读:124 留言:0更新日期:2017-06-03 22:48
本发明专利技术公开了一种安卓加固插件的逆向处理方法,包括如下步骤:对应用的可执行文件dex进行图谱化处理,生成dex文件的可视化图谱;获取虚拟机对Java类的类加载的关键函数,确定逆向插件的时间节点;对安卓系统的Dalvik虚拟机进行修改,将应用中所有的类一次性的进行类加载和初始化,将所有的类将解密并加载到内存中,收集内存中所有的类信息,将所有逆向后的类进行重新组合生成新的dex文件,由于在类初始化过程中会修改Java类在内存中的指令,在收集内存中的信息时进行修正,因此本发明专利技术提供的这种逆向处理方法可以获取大部分的加固插件源代码,并且自动化程度较高,以较小的性能开销为代价实现了针对安卓加固插件的逆向处理。

Reverse processing method for Android reinforcing plug-in unit

The invention discloses a processing method of reverse Android plug-in reinforcement, which comprises the following steps: the application executable DEX map processing, visualization map generated DEX file; the key function to get the virtual machine of Java class loading, determine the time node reverse plug-in; Dalvik virtual machine on the Android system the application of modified in all classes of one-time class loading and initialization, all classes will be decrypted and loaded into memory, all the information collected in the memory, all will reverse the class after the re combination to generate a new DEX file, because will modify the Java class in memory in the class initialization process the instructions in the correction in the collection of information in memory, so that the invention provides the reverse processing method can obtain the most reinforcement plug-in source code, and With a high degree of automation, reverse processing for Android consolidation plug-ins is realized at the expense of little performance overhead.

【技术实现步骤摘要】
一种安卓加固插件的逆向处理方法
本专利技术属于移动安全
,更具体地,涉及一种安卓加固插件的逆向处理方法。
技术介绍
作为移动互联网时代计算的主要载体,移动智能终端存储着更多的隐私数据,包括联系人信息、通话记录和地理位置信息等,更易产生安全问题,用户隐私数据泄漏可能带来灾难性的后果。安卓(Android)应用基于Java语言开发,容易被恶意攻击者逆向,导致开发者辛苦开发的应用被恶意攻击者获取;有的恶意攻击者还会把逆向后的应用源代码植入恶意代码,导致重打包恶意应用盛行。安全厂商为了解决此类问题,提供了Android应用加固服务。然而,由于安全厂商通常没有对上传应用进行安全扫描,导致很多恶意攻击者将恶意应用进行加固,以逃避安全引擎的查杀。目前恶意攻击者采用更先进的技术是使用动态加载技术,延迟启动恶意代码,开启定时器,反射执行恶意代码。为解决Android应用程序加固和动态加载技术所存在的安全问题,国内外的研究人员已经进行了一些探索与研究。DexHunter(ZhangY,LuoX,YinH.Dexhunter:Towardextractinghiddencodefrompackedandroidapplications.in:Proceedingsof20thEuropeanSymposiumonResearchinComputerSecurity.Vienna:Springer,2015.293-311.)从目前主流的加固服务商入手,提出了针对目前加固服务商的逆向处理方法,在应用加载进内存后,获取可执行文件在内存中的位置,遍历可执行文件中所有的Java类,对其进行主动的加载和初始化,再获取内存中的信息,此时得到的就是应用真实的指令,但该方法没有解决动态加载插件逆向问题。PoeplauS(PoeplauS,FratantonioY,BianchiA,etal.ExecuteThis!AnalyzingUnsafeandMaliciousDynamicCodeLoadinginAndroidApplications.in:21stAnnualNetworkandDistributedSystemSecuritySymposium.SanDiego:ISOC,2014.34-46)系统性的分析了动态加载代码带来的安全性问题,采用静态分析工具自动发现动态加载的代码;对于良性应用可能被恶意攻击者利用漏洞加载恶意插件的问题,通过修改Android系统Framework层来动态加载代码的完整性校验;但该方法缺少实用性和完整性;综上所述,目前的方法主要是针对Android应用进行逆向,或者是对动态加载存在的安全问题提出解决方案;从实施的角度来看,已有的解决方案只是获取应用安装后优化后的odex文件,对于加固的插件则无法获取其源代码。
技术实现思路
针对现有技术的以上缺陷或改进需求,本专利技术提供了一种安卓加固插件的逆向处理方法,其目的在于识别出未知恶意应用使用的加固方案,在触发插件安装时即可获取到插件,并对其进行逆向,以对插件进行源代码分析。为实现上述目的,按照本专利技术的一个方面,提供了一种安卓加固插件的逆向处理方法,通过修改安卓系统虚拟机类加载机制和初始化方法,在加固插件加载其第一个Java类之前将所述加固插件中所有的Java类主动的遍历并加载进内存中,初始化所有的Java类,将内存中所有的关于所述加固插件的信息收集起来组装成新的odex文件,得到逆向后的插件原始代码信息。优选地,采用上述方法对未知插件进行逆向处理的方法,具体包括如下步骤:(1)通过应用加固服务平台对所述未知插件进行加固;并对加固插件进行图谱化处理,确定应用加固服务平台对插件的加固优化参数;(2)修改安卓系统源码,在模拟器上监控获取加固插件的动态加载路径;(3)根据安卓系统中虚拟机类加载的关键路径,修改虚拟机初始化过程,在类初始化阶段对加固插件进行逆向,生成逆向后的odex文件,并改变虚拟机控制变量的值;(4)触发插件下载,在插件执行过程中根据虚拟机控制变量的值识别插件中所有的Java类在内存中的位置;遍历逆向后的odex文件中的Java类,主动进行类加载和初始化,根据内存中存储的逆向后的信息生成新的odex文件;(5)利用开源的工具对所述新的odex文件进行反编译,获得测试用加固插件的smail代码;可通过将所述smail代码与其源代码进行比较,获知恶意攻击信息。优选地,上述安卓加固插件的逆向处理方法,其步骤(2)包括如下子步骤:(2.1)根据开源的动态加载框架源代码,找出动态加载odex文件的调用接口;(2.2)修改调用接口,在模拟器上通过日志监控获取加固插件的动态加载的路径。优选地,上述安卓加固插件的逆向处理方法,其步骤(3)包括如下子步骤:(3.1)根据安卓系统虚拟机执行Java类的过程,跟踪类加载和初始化的函数调用过程,获取初始化的关键函数;(3.2)遍历所有的Java类,根据关键函数对所有的Java类进行初始化;(3.3)在Java类初始化阶段对测试用加固插件进行逆向,生成逆向后的odex文件,并改变虚拟机控制变量的值。优选地,上述安卓加固插件的逆向处理方法,其步骤(4)包括如下子步骤:(4.1)触发加固插件的下载,加固插件首次执行时触发控制变量的改变;(4.2)根据控制变量的值识别出加固插件中所有的Java类在内存中的位置,并将逆向后的odex文件路径传递到逆向模块;(4.3)逆向模块对逆向后的odex文件中所有的Java类进行遍历,主动进行类加载和初始化,并将逆向后的信息存储到内存;(4.4)根据在内存中收集到的逆向后的信息生成新的odex文件。总体而言,通过本专利技术所构思的以上技术方案与现有技术相比,能够取得下列有益效果:(1)本专利技术提供的安卓加固插件的逆向处理方法,通过对安卓系统的虚拟机进行修改,将逐个类进行加载的过程改为对应用中所有的类一次性的进行类加载和初始化,将所有的类解密并加载到内存中,收集内存中所有的类信息,将所有逆向后的类进行重新组合生成新的odex文件;由于在类初始化过程中会修改Java类在内存中的指令,在收集内存中的信息时会进行修正,因此可以获取到大部分的加固插件源代码,并且自动化程度较高,以较小的性能开销为代价实现了针对安卓加固插件的逆向;(2)本专利技术提供的安卓加固插件的逆向处理方法,在应用的类加载处插入逆向代码,在安卓系统虚拟机中找到Java类加载的关键函数,在关键函数中对所有的Java类进行遍历,再初始化,在隐私数据相关的特定应用程序编程接口处开始整体流程,使得本专利技术所增加的流程只影响到整体系统所有流程中较小的一部分,不影响与隐私数据无关的模块性能。附图说明图1是本专利技术的整体架构图;图2为本专利技术实施例提供的安卓加固插件的逆向处理方法的流程示意图;图3为本专利技术实施例步骤1的流程示意图;图4为本专利技术实施例步骤2的流程示意图;图5为本专利技术实施例步骤3的流程示意图;图6为本专利技术实施例步骤4的流程示意图;图7为本专利技术实施例步骤5的流程示意图。具体实施方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本发本文档来自技高网
...
一种安卓加固插件的逆向处理方法

【技术保护点】
一种安卓加固插件的逆向处理方法,其特征在于,通过修改安卓系统虚拟机类加载机制和初始化方法,在加固插件加载其第一个Java类之前将所述加固插件中所有的Java类主动的遍历并加载进内存中,初始化所有的Java类,将内存中所有的关于所述加固插件的信息收集起来组装成新的odex文件,得到逆向后的插件原始代码信息。

【技术特征摘要】
1.一种安卓加固插件的逆向处理方法,其特征在于,通过修改安卓系统虚拟机类加载机制和初始化方法,在加固插件加载其第一个Java类之前将所述加固插件中所有的Java类主动的遍历并加载进内存中,初始化所有的Java类,将内存中所有的关于所述加固插件的信息收集起来组装成新的odex文件,得到逆向后的插件原始代码信息。2.如权利要求1所述的逆向处理方法,其特征在于,采用所述方法对未知插件进行逆向处理的方法,具体包括如下步骤:(1)通过应用加固服务平台对所述未知插件进行加固;并对加固插件进行图谱化处理,确定应用加固服务平台对插件的加固优化参数;(2)修改安卓系统源码,在模拟器上监控获取加固插件的动态加载路径;(3)根据安卓系统中虚拟机类加载的关键路径,修改虚拟机初始化过程,在类初始化阶段对加固插件进行逆向,生成逆向后的odex文件,并改变虚拟机控制变量的值;(4)触发插件下载,在插件执行过程中根据虚拟机控制变量的值识别插件中所有的Java类在内存中的位置;遍历所述逆向后的odex文件中的Java类,主动进行类加载和初始化,根据内存中存储的逆向后的信息生成新的odex文件;(5)利用开源的工具对所述新的odex文件进行反编译,获得测试用加固插件的smail代码;可通过将所述smail...

【专利技术属性】
技术研发人员:李瑞轩张宏民辜希武章衡韩洪木汤俊伟
申请(专利权)人:华中科技大学
类型:发明
国别省市:湖北,42

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

1