欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

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

发布时间:2025/6/17 42 豆豆
生活随笔 收集整理的这篇文章主要介绍了 【Android 逆向】ART 脱壳 ( DexClassLoader 脱壳 | DexClassLoader 构造函数 | 参考 Dalvik 的 DexClassLoader 类加载流程 ) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

文章目录

  • 一、DexClassLoader 源码分析
  • 二、参考 Dalvik 下的 DexClassLoader 类加载流程





一、DexClassLoader 源码分析



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

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 开始分析 ;

  • 【Android 逆向】整体加固脱壳 ( 脱壳起点 : 整体加固脱壳 | Dalvik 脱壳机制 : 利用 DexClassLoader 加载过程进行脱壳 | 相关源码分析 )
  • 【Android 逆向】整体加固脱壳 ( DexClassLoader 加载 dex 流程分析 | 类加载器构造函数分析 | DexPathList 引入 )
  • 【Android 逆向】整体加固脱壳 ( DexClassLoader 加载 dex 流程分析 | DexPathList 构造函数分析 | makeDexElements 函数分析 )
  • 【Android 逆向】整体加固脱壳 ( DexClassLoader 加载 dex 流程分析 | DexPathList 中根据 File 加载 DexFile | loadDexFile 分析 )
  • 【Android 逆向】整体加固脱壳 ( DexClassLoader 加载 dex 流程分析 | DexFile loadDexFile 函数 | 构造函数 | openDexFile 函数 )
  • 【Android 逆向】整体加固脱壳 ( DexClassLoader 加载 dex 流程分析 | 查找 DexFile 对应的C代码 | dalvik_system_DexFile.cpp 分析 )
《新程序员》:云原生和全面数字化实践50位技术专家共同创作,文字、视频、音频交互阅读

总结

以上是生活随笔为你收集整理的【Android 逆向】ART 脱壳 ( DexClassLoader 脱壳 | DexClassLoader 构造函数 | 参考 Dalvik 的 DexClassLoader 类加载流程 )的全部内容,希望文章能够帮你解决所遇到的问题。

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