程序的.第一时间运行,应该使其在各组件启动前运行,只有在组件启动前,脱壳程序完成对原程序数据的解密及加载,才能使原程序正常加载并被执行。在应用启动时,作为系统下文的Application会被系统最先调用,是开发者开发的程序的执行入口点。因此,可以迪过修改AndroidMainfest.xml中关于Application 配罝。实现脱壳程序的最先运行。
(2) 原程序在股壳程序运行完后被第一时间运行
为了保证脱壳程序被第一时间运行,AndroidMainfest.xml配置文件中的Application被修改为脱壳程序的Application,修改后,原程序的Application彼全部替换,程序逻辑被改变。为了保证原程序逻辑及执行过程不被改变,应该在脱先程序运行完后,第一时间将Application对象换回原程序的。通过在AndroidMainfest.xml文件中配置原有Applicaiton类信息来达到想要的目的。
(3) 实现通过DexClassLoader对apk代码的动态加载
在Android系统中,DexclassLoader加载的类是没有组件生命周期的,也就 是说即使DexClassLoader通过对APK的动态加载完成了对组件类的加载,当系统启动该组件时,还会出现加载类失败的异常。通过查看Android源代码可知组件类的加载是由另一个ClassLoader来完成的。DexCIassLoader和系统组件ClassLoader并不存在关系,系统组件ClassLoader当然找不到由DexCiassLoader加载的类,如果把系统组件ClassLoader的parent修改成DexCIassLoader,最终可以实现对apk代码的动态加载。
(4) 保证解壳后的资源文件被代码动态引用
代码默认引用的资源文件在最外层的解壳程序中,因此需要增加系统的资源加载路径来实现对解壳后APK文件资源的加载。
上面的过程可以保证外壳程序被先执行,在外壳程序被执行的过程中,实现对源文件的解密,配置文件的修改等信息。这样在外壳程序提出时,原程序将会被正常加载执行。具体外壳程序进行脱壳,原文件解密及配置文件修改过程下图:
搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新人文社科Dex加壳解壳原理(8)全文阅读和word下载服务。
相关推荐: