安卓逆向系列七-脱壳点原理(二)

admin 2024年6月13日13:37:58评论3 views字数 1055阅读3分31秒阅读模式

上次我们提到了还有另外一个脱壳点,这个脱壳点就是DexClassLoader

根据上次我们写到的脱壳:正确的时机,dex起始位置的大小

前人已经指出来时DexClassLoader,那么我们只要跟踪就好了

安卓逆向系列七-脱壳点原理(二)

从这里我们可以看到DexClassLoader也是继承BaseDexClassLoader,构造方法也是从BaseDexClassLoader来到的

查找BaseDexClassLoader

安卓逆向系列七-脱壳点原理(二)

可以看到又来到了DexPathList,DexPathList跟原来上篇文章写的很像

安卓逆向系列七-脱壳点原理(二)

从DexPathList到了 makeDexElements。

跟踪 makeDexElements

安卓逆向系列七-脱壳点原理(二)

从for循环里面了,无论是if 还是else都走了 loadDexFile,看着这个应该是加载Dex文件的

查找loadDexFile

安卓逆向系列七-脱壳点原理(二)

loadDexFile如果if最终就是走到了DexFile构造函数无下文,如果是else就是走到了loadDex

跟踪loadDex,最终都是回到了DexFile

安卓逆向系列七-脱壳点原理(二)

查看DexFile,DexFile又是回到了我们第一个脱壳点,但是这个脱壳点和第一个是不一样的。从这里可以看到DexFile里面已经存在了2个脱壳点

安卓逆向系列七-脱壳点原理(二)

可以可以看到在经过一个try catch是没有做任何调整的。第一个调整的地方在openDexFile。跟踪openDexFile

安卓逆向系列七-脱壳点原理(二)

openDexFile最终到了 openDexFileNative。Native函数,这个时候进入到c里面查看这个函数

openDexFileNative

dalvik_system_DexFile.cc

安卓逆向系列七-脱壳点原理(二)

第一个对dex相关的是OpenDexFilesFromOat,查看OpenDexFilesFromOat

安卓逆向系列七-脱壳点原理(二)

从这个里面已经看到了dex location,意味着我们已经接近了dex的起始位置

第一对dex有相关动作的是oat_file_assistant

跟踪oat_file_assistant在oat_file_manager.cc

安卓逆向系列七-脱壳点原理(二)

又是回到了Open函数,这个地方就和上次的Open一样了,只不过调用的不一样

安卓逆向系列七-脱壳点原理(二)

第一个与file相关的就是OpenAndReadMagic

跟踪OpenAndReadMagic,与脱壳点能够对应上了

安卓逆向系列七-脱壳点原理(二)

安卓逆向系列七-脱壳点原理(二)

本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者及本公众号不为此承担任何责任

欢迎关注公众号“呼啦啦安全”,原创技术文章第一时间推送。

原文始发于微信公众号(呼啦啦安全):安卓逆向系列七-脱壳点原理(二)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年6月13日13:37:58
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   安卓逆向系列七-脱壳点原理(二)https://cn-sec.com/archives/2842920.html

发表评论

匿名网友 填写信息