【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 sina oauth2.