【Android 逆向】ART 脱壳 ( DexClassLoader 脱壳 | DexClassLoader 构造函数 | 参考 Dalvik 的 DexClassLoader 类加载流程 )
生活随笔
收集整理的這篇文章主要介紹了
【Android 逆向】ART 脱壳 ( DexClassLoader 脱壳 | DexClassLoader 构造函数 | 参考 Dalvik 的 DexClassLoader 类加载流程 )
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 一、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 类加载流程 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Android 逆向】ART 脱壳 (
- 下一篇: 【Android 逆向】ART 脱壳 (