文章目录

  • 一、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 分析 )

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

  1. 【Android 逆向】整体加固脱壳 ( DexClassLoader 加载 dex 流程分析 | DexFile loadDexFile 函数 | 构造函数 | openDexFile 函数 )

    文章目录 前言 一.DexFile.loadDexFile 函数分析 二.DexFile 构造函数分析 三.DexFile.openDexFile 函数分析 前言 上一篇博客 [Android 逆向] ...

  2. 【Android 逆向】整体加固脱壳 ( DexClassLoader 加载 dex 流程分析 | DexPathList 构造函数分析 | makeDexElements 函数分析 )

    文章目录 前言 一.DexPathList 构造函数分析 二.DexPathList.makeDexElements 函数分析 三.Element 类分析 前言 上一篇博客 [Android 逆向]整 ...

  3. 【Android 逆向】整体加固脱壳 ( DexClassLoader 加载 dex 流程分析 | 查找 DexFile 对应的C代码 | dalvik_system_DexFile.cpp 分析 )

    文章目录 前言 一.查找 DexFile 对应的 C++ 代码 1.根据 Native 文件命名惯例查找 C++ 代码 2.根据方法名查找 二.dalvik_system_DexFile.cpp 源码 ...

  4. 【Android 逆向】整体加固脱壳 ( DexClassLoader 加载 dex 流程分析 | DexPathList 中根据 File 加载 DexFile | loadDexFile 分析 )

    文章目录 前言 一.根据 File 加载 DexFile 二.DexPathList.loadDexFile 函数分析 前言 上一篇博客 [Android 逆向]整体加固脱壳 ( DexClassLo ...

  5. 【Android 逆向】整体加固脱壳 ( DexClassLoader 加载 dex 流程分析 | RawDexFile.cpp 分析 | dvmRawDexFileOpen函数读取 DEX 文件 )

    文章目录 前言 一.RawDexFile.cpp 中 dvmRawDexFileOpen() 方法分析 前言 上一篇博客 [Android 逆向]整体加固脱壳 ( DexClassLoader 加载 ...

  6. 【Android 逆向】整体加固脱壳 ( DEX 优化流程分析 | DexPrepare.cpp 中 dvmOptimizeDexFile() 方法分析 | /bin/dexopt 源码分析 )

    文章目录 前言 一.DexPrepare.cpp 中 dvmOptimizeDexFile() 方法分析 二./bin/dexopt 源码分析 前言 上一篇博客 [Android 逆向]整体加固脱壳 ...

  7. 【Android 逆向】整体加固脱壳 ( 脱壳点简介 | 修改系统源码进行脱壳 )

    文章目录 一.脱壳点简介 二.修改系统源码进行脱壳 一.脱壳点简介 在上一篇博客 [Android 逆向]整体加固脱壳 ( DEX 优化流程分析 | DexPrepare.cpp 中 rewriteD ...

  8. 【Android 逆向】整体加固脱壳 ( DEX 优化流程分析 | dvmDexFileOpenPartial | dexFileParse | 脱壳点 | 获取 dex 文件在内存中的首地址 )

    文章目录 前言 一.DexPrepare.cpp 中 rewriteDex() 方法分析 二.DvmDex.cpp 中 dvmDexFileOpenPartial() 方法分析 ( 脱壳点 ) 三.D ...

  9. 【Android 逆向】整体加固脱壳 ( DEX 优化流程分析 | DexPrepare.cpp 中 dvmContinueOptimizati() 函数分析 )

    文章目录 前言 一.DexPrepare.cpp 中 dvmContinueOptimizati() 方法分析 前言 上一篇博客 [Android 逆向]整体加固脱壳 ( DEX 优化流程分析 | D ...

最新文章

  1. apache php 调优_记一次apache+php调优
  2. linux下oracle自动创建实例脚本
  3. Scikit-learn新版本发布,一行代码秒升级
  4. fetch 发送 AJAX请求
  5. Spring启动执行流程梳理
  6. 找到比某个数大的最小的2的次幂
  7. 怎么退出自适应巡航_沃尔-ACC 自适应巡航控制系统
  8. 三相pmsm矢量控制仿真模型_低载波比工况下永磁同步电机磁链矢量轨迹分析
  9. MATLAB slider中的数值,在微信小程序中如何使用slider设置数据值
  10. PS教程第七课:如何查看图层
  11. 判断鼠标不在控件上_VB常用控件属性讲解单选按钮、复选框总结
  12. java飞行_运行java飞行记录器JFR(java flight recorder)
  13. 计算机上相同的用户,php会话为不同计算机上的不同用户发出相同的session_id
  14. 软件性能测试pdf,软件性能测试报告模板.pdf
  15. Temporal Abstraction
  16. annot keep settings in the secure 或WRITE_SETTINGS not granted
  17. python excel取数 生成报告_python读取excel表格生成erlang数据
  18. 分享 | 自定义属于自己的U盘图标
  19. python刷题 NOI题库 python题解 洛谷、牛客网、AcWing 刷题等
  20. 对 iOS 中 GPU 编程的高度优化的框架 Metal

热门文章

  1. 好东西,各城市域名解析测试及网速测试
  2. jenkins+svn搭建
  3. android 获取应用的当前版本号获取当前android系统的版本号
  4. shell学习之常用命令总结
  5. 数学之美 系列一 -- 统计语言模型
  6. 石川es6课程---18、ES6 复习
  7. mysql数据库的介绍及安装
  8. Gibbs sampling
  9. 数据库里any 和 all 的区别
  10. 数据的标准化和标准化方法