首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

文章目录 一、DexClassLoader 源码分析 二、参考 Dalvik 下的 DexClassLoader 类加载流程 一、DexClassLoader 源码分析 ---- ART 虚拟机下的 DexClassLoader...的构造函数 , 与 Dalvik 虚拟机下的 DexClassLoader 构造函数基本相同 , 都是只实现了一个构造函数 , 调用了 BaseDexClassLoader 父类 ; package...*/ public class DexClassLoader extends BaseDexClassLoader { /** * 创建一个{@code-DexClassLoader}来查找解释的和本机的...类加载流程 ---- ART 虚拟机下的 DexClassLoader 类加载流程 , 在 Java 层 与 Dalvik 下的类加载流程类似 , 参考如下博客 , 然后直接从 native 函数 /...】整体加固脱壳 ( DexClassLoader 加载 dex 流程分析 | 查找 DexFile 对应的C代码 | dalvik_system_DexFile.cpp 分析 )

22730
您找到你想要的搜索结果了吗?
是的
没有找到

【Android 逆向】ART 脱壳 ( DexClassLoader 脱壳 | ART 虚拟机下 DexClassLoader 类加载器脱壳点总结 )

文章目录 一、ART 虚拟机下 DexClassLoader 类加载器脱壳点总结 1、file_magic.cc#OpenAndReadMagic 函数 2、dex_file.cc#DexFile::...OpenCommon 3、dex_file.cc#DexFile::DexFile 总结 ( 兼容 InMemoryDexClassLoader 和 DexClassLoader 两种类加载器的 脱壳点...) 一、ART 虚拟机下 DexClassLoader 类加载器脱壳点总结 ---- 从 /art/runtime/dex_file.cc#DexFile::Open 函数开始分析脱壳点位置 ; 其中调用的...InitializeSectionsFromMapList(); } 源码地址 : /art/runtime/dex_file.cc#DexFile ---- 总结 ( 兼容 InMemoryDexClassLoader 和 DexClassLoader...两种类加载器的 脱壳点 ) 加固厂商可能使用 InMemoryDexClassLoader 类加载器 , 也可能使用 DexClassLoader 类加载器 , 这里为了保证不管使用什么类加载器 ,

73930

【Android 逆向】类加载器 ClassLoader ( 类加载器源码简介 | BaseDexClassLoader | DexClassLoader | PathClassLoader )

文章目录 一、ClassLoader 源码简介 二、BaseDexClassLoader 源码简介 三、DexClassLoader 源码简介 四、PathClassLoader 源码简介 五、InMemoryDexClassLoader...ClassLoader 抽象类中的 private final ClassLoader parent 成员 , 用于实现双亲委派机制 , 所有的 ClassLoader 子类 , 如 PathClassLoader , DexClassLoader...源码简介 ---- DexClassLoader 继承了 BaseDexClassLoader 类 , 类中没有实现任何业务逻辑 , 只是提供了一个构造函数 ; DexClassLoader 源码 :...*/ public class DexClassLoader extends BaseDexClassLoader { /** * 创建一个{@code-DexClassLoader}...由{@code File.pathSeparator}分隔;可能是 * {@code null} * @param parent 父类加载器 */ public DexClassLoader

93420

【Android 逆向】整体加固脱壳 ( DexClassLoader 加载 dex 流程分析 | 类加载器构造函数分析 | DexPathList 引入 )

文章目录 一、DexClassLoader 类加载器构造函数分析 二、DexPathList 引入 一、DexClassLoader 类加载器构造函数分析 ---- DexClassLoader 是加载...dex 文件的核心类 , 但是该类除了定义了一个构造函数之外 , 并没有实现其它业务逻辑操作 ; DexClassLoader 是 BaseDexClassLoader 的子类 , 因此类加载的核心操作流程..., 都定义在 BaseDexClassLoader.java 代码中 ; DexClassLoader 的构造函数 , 调用了 BaseDexClassLoader 的构造函数 ; public class...DexClassLoader extends BaseDexClassLoader { public DexClassLoader(String dexPath, String optimizedDirectory...optimizedDirectory), libraryPath, parent); } } 源码路径 : /libcore/dalvik/src/main/java/dalvik/system/DexClassLoader.java

26860

Android插件化学习之路(三)之调用外部.dex文件中的代码

apk的存放Path,所以只能加载已经安装的apk文件; 使用前,先看看DexClassLoader的构造方法 public DexClassLoader(String dexPath, String...; } 注意,我们之前提到的,DexClassLoader并不能直接加载外部存储的.dex文件,而是要先拷贝到内部存储里。...dexClassLoader = new DexClassLoader(optimizedDexOutputPath.getAbsolutePath(), dexOutputDir.getAbsolutePath...如何调用.dex里面的代码 使用反射的方式 使用DexClassLoader加载进来的类,我们本地并没有这些类的源码,所以无法直接调用,不过可以通过反射的方法调用,简单粗暴。...DexClassLoader dexClassLoader = new DexClassLoader(optimizedDexOutputPath.getAbsolutePath(), dexOutputDir.getAbsolutePath

94330

【Android 热修复】热修复原理 ( 合并两个 Element[] dexElements | 自定义 Application 加载 Dex 设置 | 源码资源 )

dexElements 二、 完整修复包加载工具类 三、 源码资源 一、合并两个 Element[] dexElements ---- 在 【Android 热修复】热修复原理 ( 加载 Dex 文件到内存中 | DexClassLoader...Dex 文件对应的 Element[] dexElements 通过 PathClassLoader 类加载器获取到了 , 同时修复包对应 Dex 文件 Element[] dexElements 通过 DexClassLoader...pathClassLoader 的 DexPathList pathList 对象的 Element[] dexElements 成员systemDexElementsObject 与 自己在程序中的 DexClassLoader...dexClassLoader = new DexClassLoader( file.getAbsolutePath(),...dexClassLoader // 加载自己的 Element[] dexElements ---------------------------------

22320

【Android 逆向】整体加固脱壳 ( 脱壳起点 : 整体加固脱壳 | Dalvik 脱壳机制 : 利用 DexClassLoader 加载过程进行脱壳 | 相关源码分析 )

文章目录 一、脱壳起点 : 整体加固脱壳 二、Dalvik 脱壳机制 : 利用 DexClassLoader 加载过程进行脱壳 1、DexClassLoader 源码 2、DexClassLoader...加载过程进行脱壳 ---- Dalvik 脱壳机制 : 在 Dalvik 下 , 使用自定义 DexClassLoader 加载 dex 字节码文件中的类 , 通过分析 DexClassLoader...源码 , 查找 hook 点 , 进而找到 dex 文件被 加载到内存 中的 起始地址 ; 下面分析 DexClassLoader 加载 dex 文件的流程 ; 1、DexClassLoader 源码...DexClassLoader 继承了 BaseDexClassLoader 类 , 类中没有实现任何业务逻辑 , 只是提供了一个构造函数 ; DexClassLoader 源码 : /** * 从{@...DexClassLoader dexClassLoader = new DexClassLoader( dexFilePath,

63820

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

文章目录 一、加固厂商在 ART 下使用的两种类加载器 ( InMemoryDexClassLoader | DexClassLoader ) 二、InMemoryDexClassLoader 源码分析...一、加固厂商在 ART 下使用的两种类加载器 ( InMemoryDexClassLoader | DexClassLoader ) ---- 脱壳就是要在加固厂商使用类加载器加载 DEX 文件时 ,...从加载过程中 , 从内存中获取 DEX 文件 ; 在 Dalvik 虚拟机的 Android 系统 中 , 即 Android 4.4 及以下的系统 , 加固厂商 使用 DexClassLoader...DEX 字节码文件 ; 在 ART 虚拟机的 Android 系统 中 , 即 Android 5.0 及以上的系统 , 加固厂商使用 InMemoryDexClassLoader 或者 DexClassLoader...; 其中 InMemoryDexClassLoader 是 Android 8.0 引入的类加载器 ; 由于要分析 ART 虚拟机下的 InMemoryDexClassLoader 和 DexClassLoader

53630

【Java 虚拟机原理】Android 类加载机制 ( 双亲委派机制 | BootClassLoader | PathClassLoader | DexClassLoader )

Android 中的类加载 使用了 双亲委派 机制 , 如下图所示 : 在 Android 中提供了 3 个类加载器 , BootClassLoader , PathClassLoader , DexClassLoader...; 类加载器的继承结构 : BootClassLoader 是父类 , PathClassLoader / DexClassLoader 是 BootClassLoader 的子类 ; 调用 DexClassLoader...进行类加载 A 时 , 进行如下操作 : ① DexClassLoader 查询 : 查询自己是否加载过 A ; 如果加载过则不需要再进行加载 ; 如果没有加载过 , 则向上级 PathClassLoader...; ④ DexClassLoader 查询是否可以加载 : 如果自己可以加载 A , 则自己加载 ; 如果自己不可以加载 A , 则 抛出 Class Not Found 异常 ; 整个过程就是 从下到上...询问 , 然后 从上到下 委派 ; 二、双亲委派机制 ---- 类加载器层级 : 由高到低 : BootClassLoader -> PathClassLoader / DexClassLoader

52520

【Android 逆向】类加载器 ClassLoader ( Android 的八种类加载器 | ClassLoader | BaseDexClassLoader | DexClassLoader )

文章目录 一、Android 类加载器 1、ClassLoader 抽象类 2、BootClassLoader 3、BaseDexClassLoader 4、PathClassLoader 5、DexClassLoader...字节码文件的业务逻辑就是在 BaseDexClassLoader 中实现的 ; BaseDexClassLoader 的 3 个子类 , InMemoryDexClassLoader PathClassLoader DexClassLoader...应用中的类 , 都是由 PathClassLoader 进行加载 ; Android 系统相关的类 , 如 四大组件类 , Android 自带类 , 都是由 PathClassLoader 加载的 ; 5、DexClassLoader...DexClassLoader 是 BaseDexClassLoader 的子类 , 该类可以加载任意目录下的 DEX 或 JAR 格式的 字节码文件 ; 热修复 就是 加载 SD 卡中的 DEX 文件..., 插件化 也是加载 SD 卡中的 APK 文件中的 DEX 文件 ; DexClassLoader 在 动态字节码技术 , 热修复 , 插件化 , DEX 加固 等方面使用广泛 ; 5、SecureClassLoader

67220

【Android 插件化】插件化原理 ( 类加载器 )

双亲委派机制 , Android 中顶级的类加载器 ClassLoader 是 BootClassLoader , 然后其下是 PathClassLoader , PathClassLoader 与 DexClassLoader...基本相同 ; DexClassLoader 继承了 BaseDexClassLoader , 没有实现任何逻辑 , 只是调用 BaseDexClassLoader 的构造方法进行初始化 ; public...class DexClassLoader extends BaseDexClassLoader { public DexClassLoader(String dexPath, String...PathClassLoader 也是继承了 BaseDexClassLoader , 其中定义的构造方法与 DexClassLoader 相同 ; public class PathClassLoader...实现的功能基本相同 , 二者都可以用于加载 Dex 文件 ; PathClassLoader 是 Google 官方使用的 , DexClassLoader 是提供给开发者使用的 , 使用类加载器时

44810

【Android 插件化】“ 插桩式 “ 插件化框架 ( 类加载器创建 | 资源加载 )

, 使用其构造函数创建 , 需要传入四个参数到构造函数中 ; package dalvik.system; import java.io.File; public class DexClassLoader...extends BaseDexClassLoader { public DexClassLoader(String dexPath, String optimizedDirectory, String...; } } DexClassLoader 构造函数 参数说明 : ① String dexPath : 插件包加载路径 ; ② String optimizedDirectory : 开发者指定的...(), // apk 解压缓存目录 null, context.getClassLoader() // DexClassLoader 加载器的父类加载器 ); 注意 :...类加载时 , 只会加载一次 , 如果有重复的类 , 不会重复加载 ; BootClassLoader 主要作用是加载 JDK 中的字节码类对象 ; DexClassLoader 和 PathClassLoader

1.2K10

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券