The invention relates to the field of Android application strengthening and protection technology and the field of DEX shelling, which aims to provide a universal method and system for automatic DEX file shelling. The technology uses the shell code into the Android Dalvik virtual machine portable interpreter, the specific contents include: the use of comparative analysis, comparison of the AndroidManifest.xml configuration file in all classes and get all kinds of decompilation, determine whether the application of reinforcement, and the homology analysis to identify the application of reinforcement services; application MainActivity DEX began as a sign of shelling, using simulation run recovery application of true byte code, the recovered real data is extracted, and finally put these data into a new DEX file, the restructuring process also involves the corresponding pointer modification. This system has good versatility, can bypass the Anti debugging protection technology, artificial analysis without shelling process, also do not need to understand the strategy of reinforcement reinforcement services, can be extracted from the original DEX file reinforcement application. The invention provides a new solution for the reinforcement of the application of DEX automatic shelling.
【技术实现步骤摘要】
一种通用的DEX自动脱壳方法与系统
本专利技术涉及Android应用加固
和DEX文件脱壳
,尤其涉及一种通用的DEX自动脱壳方法与系统。
技术介绍
从2008年Android系统诞生以来,便迅速占领了智能手机操作系统的市场,成为当今最受欢迎的手机操作系统。由于其本身的开源性,受到了安全界的广泛关注。相比于封闭的IOS操作系统,Android系统的安全问题更容易被发现和补救,因此安全性也更值得信赖。然而随着操作系统的不断发展,Android应用的开发也盛况空前,种类之多,涉及到人们生活的方方面面。在各种应用给我们带来便利的同时,安全问题也频频出现,许多恶意应用如木马等,也越来越多。而且Android系统的碎片化问题严重,不同厂商有自己定制的系统固件和自己的应用市场,不像IOS,只有苹果一家公司和唯一的APPstore。Android除了GooglePlay以外,还有其他的应用市场,这也给恶意应用以可趁之机。Android应用同时还支持web下载,这样使得恶意应用传播方式更多样化。虽然也有很多相应的恶意应用检测工具和相关研究,但是还是不能做到对于恶意应用 ...
【技术保护点】
一种通用的DEX自动脱壳方法,其特征在于,所述方法包括如下步骤:A、通过对Android DEX文件自动脱壳技术的研究,找到了一个通用的零知识脱壳方法,在Dalvik虚拟机的解释器中进行脱壳操作;B、加固识别对应用是否使用加固服务进行判断与识别;C、使用模拟运行恢复出DEX文件真正的字节码;D、dump出dex或者odex文件的所有数据;E、最后进行dex或者odex文件的重组和相应指针的修改。
【技术特征摘要】
1.一种通用的DEX自动脱壳方法,其特征在于,所述方法包括如下步骤:A、通过对AndroidDEX文件自动脱壳技术的研究,找到了一个通用的零知识脱壳方法,在Dalvik虚拟机的解释器中进行脱壳操作;B、加固识别对应用是否使用加固服务进行判断与识别;C、使用模拟运行恢复出DEX文件真正的字节码;D、dump出dex或者odex文件的所有数据;E、最后进行dex或者odex文件的重组和相应指针的修改。2.根据权利要求1所述的一种通用的DEX自动脱壳方法,其特征在于,所述的步骤A进一步包括如下步骤:A1、将AndroidDalvik虚拟机的解释器指定为portable解释器,让程序运行时所有方法都使用同一个解释器解释执行;A2、找到portable解释器中解释执行应用程序方法的函数:dvmInterpretPortable(),在该函数中插入DEX文件自动脱壳代码;A3、以应用程序的MainActivity是否启动作为DEX文件脱壳开始的标志,如果MainActivity启动了,就开始脱壳,反之则不进行脱壳操作。3.根据权利要求2所述的一种通用的DEX自动脱壳方法,其特征在于,步骤A1中所述的解释器指定为portable解释器具体是指:AndroidDalvik虚拟机中有三种解释器,分别为portable解释器、fast解释器和JIT解释器。其中portable解释器是C语言实现的,可以用在不同的设备上,而其余两种是汇编实现的,并且是根据相应的设备进行优化过的,移植到其他设备上的性能差,因此该工具选择portable解释器插入DEX文件脱壳代码,可以应用于不同的设备上。指定只使用这一个解释器也使得应用程序的所有方法的执行都会经过该解释器,以便之后的脱壳开始标志的定位。4.根据权利要求2所述的一种通用的DEX自动脱壳方法,其特征在于,步骤A3中所述的脱壳开始的标志具体是指:无论程序怎么加固,始终都会在解释器中执行MainActivity中的方法,因为程序运行的入口函数为MainActivity的onCreate()函数,所以选择应用程序的MainActivity是否启动作为DEX文件脱壳开始的标志。这时的DEX文件是被加固服务解密释放到内存中的,只是可能存在部分数据没恢复的情况。5.根据权利要求1所述的一种通用的DEX自动脱壳方法,其特征在于,所述的步骤B进一步包括如下步骤:B1、解析出加固应用中AndroidManifest.xml配置文件中所有的类;B2、反编译加固应用,得到反编译出来的所有类;B3、将B1、B2中得到的类进行对比,判断应用是否加固;B4、使用同源性分析识别加固服务。6.根据权利要求5所述的一种通用的DEX自动脱壳方法,其特征在于,步骤B3中所述的加固判断具体是指:如果B1中的类包括B2中的类,而B2中的类只是B1中的类的一小部分,那么就判定应用是加固应...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。