前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Android 逆向】ART 脱壳 ( InMemoryDexClassLoader 脱壳 | 加固厂商在 ART 下使用的两种类加载器 | InMemoryDexClassLoader 源码 )

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

作者头像
韩曙亮
发布2023-03-30 09:27:56
6230
发布2023-03-30 09:27:56
举报
文章被收录于专栏:韩曙亮的移动开发专栏

文章目录

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


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

  • 在 Dalvik 虚拟机的 Android 系统 中 , 即 Android
4.4

及以下的系统 , 加固厂商 使用 DexClassLoader 加载 DEX 字节码文件 ;

  • 在 ART 虚拟机的 Android 系统 中 , 即 Android
5.0

及以上的系统 , 加固厂商使用 InMemoryDexClassLoader 或者 DexClassLoader 加载 DEX 字节码文件 ;

  • 其中 InMemoryDexClassLoader 是 Android
8.0

引入的类加载器 ;

由于要分析 ART 虚拟机下的 InMemoryDexClassLoader 和 DexClassLoader 类加载器 , 这里分析 Android

8.0

源码 ;

二、InMemoryDexClassLoader 源码分析


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

2

个构造函数调用了第

1

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

代码语言:javascript
复制
super(dexBuffers, parent);

InMemoryDexClassLoader 源码 :

代码语言:javascript
复制
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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-12-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、加固厂商在 ART 下使用的两种类加载器 ( InMemoryDexClassLoader | DexClassLoader )
  • 二、InMemoryDexClassLoader 源码分析
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档