前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Android 逆向】ART 脱壳 ( DexClassLoader 脱壳 | DexClassLoader 构造函数 | 参考 Dalvik 的 DexClassLoader 类加载流程 )

【Android 逆向】ART 脱壳 ( DexClassLoader 脱壳 | DexClassLoader 构造函数 | 参考 Dalvik 的 DexClassLoader 类加载流程 )

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

文章目录

一、DexClassLoader 源码分析


ART 虚拟机下的 DexClassLoader 的构造函数 , 与 Dalvik 虚拟机下的 DexClassLoader 构造函数基本相同 , 都是只实现了一个构造函数 , 调用了 BaseDexClassLoader 父类 ;

代码语言:javascript
复制
package dalvik.system;

import java.io.File;

/**
 * 从{@code.jar}和{@code.apk}文件加载类的类加载器
 * 包含{@code classes.dex}项。这可用于执行代码,而不是
 * 作为应用程序的一部分安装。
 * 
 * <p>此类加载器需要一个应用程序专用的可写目录来
 * 缓存优化类。使用{@code Context.getCodeCacheDir()}创建
 * 这样一个目录:<pre>{@code
 * 文件dexOutputDir=上下文。getCodeCacheDir();
 * }</pre>
 * 
 * <p><strong>不要在外部存储上缓存优化的类</强>
 * 外部存储不提供保护您的计算机所需的访问控制
 * 防止代码注入攻击的应用程序。
 */
public class DexClassLoader extends BaseDexClassLoader {
	/**
	 * 创建一个{@code-DexClassLoader}来查找解释的和本机的
	 * 代码。解释类可以在包含的一组DEX文件中找到
	 * 在Jar或APK文件中。
	 * 
	 * <p>使用指定的字符分隔路径列表
	 * {@code path.separator}系统属性,默认为{@code:}。
	 * 
	 * @param dexPath包含类和
	 * 资源,由{@code File.pathSeparator}分隔,其中
	 * Android上的默认值为{@code”:“}
	 * @param optimizedDirectory目录,其中包含优化的dex文件
	 * 应该是书面的;不能为{@code null}
	 * @param librarySearchPath包含本机
	 * 库,由{@code File.pathSeparator}分隔;可能是
	 * {@code null}
	 * @param parent父类加载器
	 */
    public DexClassLoader(String dexPath, String optimizedDirectory,
            String librarySearchPath, ClassLoader parent) {
        super(dexPath, new File(optimizedDirectory), librarySearchPath, parent);
    }
}

二、参考 Dalvik 下的 DexClassLoader 类加载流程


ART 虚拟机下的 DexClassLoader 类加载流程 , 在 Java 层 与 Dalvik 下的类加载流程类似 , 参考如下博客 , 然后直接从 native 函数 /art/runtime/native/dalvik_system_DexFile.cc#DexFile_openDexFileNative 开始分析 ;

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、DexClassLoader 源码分析
  • 二、参考 Dalvik 下的 DexClassLoader 类加载流程
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档