前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Android 逆向】类加载器 ClassLoader ( 使用 DexClassLoader 动态加载字节码文件 | 准备 DEX 字节码文件 )

【Android 逆向】类加载器 ClassLoader ( 使用 DexClassLoader 动态加载字节码文件 | 准备 DEX 字节码文件 )

作者头像
韩曙亮
发布2023-03-30 09:16:01
4100
发布2023-03-30 09:16:01
举报

文章目录

一、DexClassLoader 构造函数简介


DexClassLoader 构造函数如下 :

代码语言:javascript
复制
    /**
     * 创建一个{@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 字节码文件 ,

代码语言:javascript
复制
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 目录下 ;

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、DexClassLoader 构造函数简介
  • 二、准备 DEX 文件
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档