【Android 逆向】类加载器 ClassLoader ( 使用 DexClassLoader 动态加载字节码文件 | 准备 DEX 字节码文件 )
生活随笔
收集整理的这篇文章主要介绍了
【Android 逆向】类加载器 ClassLoader ( 使用 DexClassLoader 动态加载字节码文件 | 准备 DEX 字节码文件 )
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
文章目录
- 一、DexClassLoader 构造函数简介
- 二、准备 DEX 文件
一、DexClassLoader 构造函数简介
DexClassLoader 构造函数如下 :
/*** 创建一个{@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);}源码路径 : /libcore/dalvik/src/main/java/dalvik/system/DexClassLoader.java
DexClassLoader 构造函数 参数 :
- String dexPath : 要加载的 DEX 或 JAR 格式字节码的路径 ;
- String optimizedDirectory : 优化目录 , 加载 zip 或 apk 文件 , 需要对 dex 优化生成 odex , 优化后的文件需要存放在该优化目录中 ;
- String librarySearchPath : 相关函数库搜索路径 , 如果没有引用外部函数库 , 可以设置为 null ;
- ClassLoader parent : 父节点类加载器 ,
二、准备 DEX 文件
在 Android Studio 工程中 , 创建 Module ,
并在其中 , 设置一个测试类 , 之后要使用 DexClassLoader 加载该 DEX 字节码文件 ,
package com.example.dex_demo;import android.util.Log;/*** 测试 DEX 字节码加载并执行*/ public class DexTest {public void test(){Log.i("DexTest", "DexTest : Hello World!!!");} }选择 " 菜单栏 / Build / " 编译程序 , 生成 APK 文件 ;
编译后的 dex_demo-debug.apk 文件 , 在当前位置解压 , 获取其中的 classes.dex 字节码文件 ;
将该 DEX 文件拷贝到 主应用的 assets 目录下 ;
总结
以上是生活随笔为你收集整理的【Android 逆向】类加载器 ClassLoader ( 使用 DexClassLoader 动态加载字节码文件 | 准备 DEX 字节码文件 )的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 【Git】Git 标签使用 ( 创建并查
- 下一篇: 【Android 逆向】类加载器 Cla