欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > Android >内容正文

Android

【Android 逆向】ART 脱壳 ( InMemoryDexClassLoader 脱壳 | 加固厂商在 ART 下使用的两种类加载器 | InMemoryDexClassLoader 源码 )

发布时间:2025/6/17 Android 70 豆豆
生活随笔 收集整理的这篇文章主要介绍了 【Android 逆向】ART 脱壳 ( InMemoryDexClassLoader 脱壳 | 加固厂商在 ART 下使用的两种类加载器 | InMemoryDexClassLoader 源码 ) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

文章目录

  • 一、加固厂商在 ART 下使用的两种类加载器 ( InMemoryDexClassLoader | DexClassLoader )
  • 二、InMemoryDexClassLoader 源码分析





一、加固厂商在 ART 下使用的两种类加载器 ( InMemoryDexClassLoader | DexClassLoader )



脱壳就是要在加固厂商使用类加载器加载 DEX 文件时 , 从加载过程中 , 从内存中获取 DEX 文件 ;

  • Dalvik 虚拟机的 Android 系统 中 , 即 Android 4.44.44.4 及以下的系统 , 加固厂商 使用 DexClassLoader 加载 DEX 字节码文件 ;

  • ART 虚拟机的 Android 系统 中 , 即 Android 5.05.05.0 及以上的系统 , 加固厂商使用 InMemoryDexClassLoader 或者 DexClassLoader 加载 DEX 字节码文件 ;

  • 其中 InMemoryDexClassLoaderAndroid 8.08.08.0 引入的类加载器 ;


由于要分析 ART 虚拟机下的 InMemoryDexClassLoaderDexClassLoader 类加载器 , 这里分析 Android 8.08.08.0 源码 ;





二、InMemoryDexClassLoader 源码分析



InMemoryDexClassLoader 类加载器源码中 , 只定义了构造函数 , 没有定义实际业务逻辑 , 与 DexClassLoader 类似 ;

222 个构造函数调用了第 111 个构造函数 , 第一个构造函数中 , 调用了 BaseDexClassLoader 的构造函数 ,

super(dexBuffers, parent);

InMemoryDexClassLoader 源码 :

package dalvik.system;import java.nio.ByteBuffer;/*** 一个{@link ClassLoader}实现,从* 包含DEX文件的缓冲区。这可用于执行以下代码:* 尚未写入本地文件系统。*/ public final class InMemoryDexClassLoader extends BaseDexClassLoader {/*** 使用给定的DEX缓冲区创建内存中的DEX类装入器。* * @param dexBuffers 包含之间的DEX文件的缓冲区数组* <tt>缓冲区。位置()</tt>和<tt>缓冲区。限制()</tt>。* @param parent 委托的父类加载器。* @隐藏*/public InMemoryDexClassLoader(ByteBuffer[] dexBuffers, ClassLoader parent) {super(dexBuffers, parent);}/*** 创建一个新的内存中DEX类装入器。* * @param dexBuffer缓冲区,包含之间的DEX文件内容* <tt>缓冲区。位置()</tt>和<tt>缓冲区。限制()</tt>。* @param parent委托的父类加载器。*/public InMemoryDexClassLoader(ByteBuffer dexBuffer, ClassLoader parent) {this(new ByteBuffer[] { dexBuffer }, parent);} }

源码路径 : /libcore/dalvik/src/main/java/dalvik/system/InMemoryDexClassLoader.java

总结

以上是生活随笔为你收集整理的【Android 逆向】ART 脱壳 ( InMemoryDexClassLoader 脱壳 | 加固厂商在 ART 下使用的两种类加载器 | InMemoryDexClassLoader 源码 )的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。