【Android 逆向】ART 脱壳 ( DexClassLoader 脱壳 | DexClassLoader 构造函数 | 参考 Dalvik 的 DexClassLoader 类加载流程 )
生活随笔
收集整理的這篇文章主要介紹了
【Android 逆向】ART 脱壳 ( DexClassLoader 脱壳 | DexClassLoader 构造函数 | 参考 Dalvik 的 DexClassLoader 类加载流程 )
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文章目錄
- 一、DexClassLoader 源碼分析
- 二、參考 Dalvik 下的 DexClassLoader 類加載流程
一、DexClassLoader 源碼分析
ART 虛擬機(jī)下的 DexClassLoader 的構(gòu)造函數(shù) , 與 Dalvik 虛擬機(jī)下的 DexClassLoader 構(gòu)造函數(shù)基本相同 , 都是只實(shí)現(xiàn)了一個(gè)構(gòu)造函數(shù) , 調(diào)用了 BaseDexClassLoader 父類 ;
package dalvik.system;import java.io.File;/*** 從{@code.jar}和{@code.apk}文件加載類的類加載器* 包含{@code classes.dex}項(xiàng)。這可用于執(zhí)行代碼,而不是* 作為應(yīng)用程序的一部分安裝。* * <p>此類加載器需要一個(gè)應(yīng)用程序?qū)S玫目蓪懩夸泚?lái)* 緩存優(yōu)化類。使用{@code Context.getCodeCacheDir()}創(chuàng)建* 這樣一個(gè)目錄:<pre>{@code* 文件dexOutputDir=上下文。getCodeCacheDir();* }</pre>* * <p><strong>不要在外部存儲(chǔ)上緩存優(yōu)化的類</強(qiáng)>* 外部存儲(chǔ)不提供保護(hù)您的計(jì)算機(jī)所需的訪問控制* 防止代碼注入攻擊的應(yīng)用程序。*/ public class DexClassLoader extends BaseDexClassLoader {/*** 創(chuàng)建一個(gè){@code-DexClassLoader}來(lái)查找解釋的和本機(jī)的* 代碼。解釋類可以在包含的一組DEX文件中找到* 在Jar或APK文件中。* * <p>使用指定的字符分隔路徑列表* {@code path.separator}系統(tǒng)屬性,默認(rèn)為{@code:}。* * @param dexPath包含類和* 資源,由{@code File.pathSeparator}分隔,其中* Android上的默認(rèn)值為{@code”:“}* @param optimizedDirectory目錄,其中包含優(yōu)化的dex文件* 應(yīng)該是書面的;不能為{@code null}* @param librarySearchPath包含本機(jī)* 庫(kù),由{@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 虛擬機(jī)下的 DexClassLoader 類加載流程 , 在 Java 層 與 Dalvik 下的類加載流程類似 , 參考如下博客 , 然后直接從 native 函數(shù) /art/runtime/native/dalvik_system_DexFile.cc#DexFile_openDexFileNative 開始分析 ;
- 【Android 逆向】整體加固脫殼 ( 脫殼起點(diǎn) : 整體加固脫殼 | Dalvik 脫殼機(jī)制 : 利用 DexClassLoader 加載過程進(jìn)行脫殼 | 相關(guān)源碼分析 )
- 【Android 逆向】整體加固脫殼 ( DexClassLoader 加載 dex 流程分析 | 類加載器構(gòu)造函數(shù)分析 | DexPathList 引入 )
- 【Android 逆向】整體加固脫殼 ( DexClassLoader 加載 dex 流程分析 | DexPathList 構(gòu)造函數(shù)分析 | makeDexElements 函數(shù)分析 )
- 【Android 逆向】整體加固脫殼 ( DexClassLoader 加載 dex 流程分析 | DexPathList 中根據(jù) File 加載 DexFile | loadDexFile 分析 )
- 【Android 逆向】整體加固脫殼 ( DexClassLoader 加載 dex 流程分析 | DexFile loadDexFile 函數(shù) | 構(gòu)造函數(shù) | openDexFile 函數(shù) )
- 【Android 逆向】整體加固脫殼 ( DexClassLoader 加載 dex 流程分析 | 查找 DexFile 對(duì)應(yīng)的C代碼 | dalvik_system_DexFile.cpp 分析 )
總結(jié)
以上是生活随笔為你收集整理的【Android 逆向】ART 脱壳 ( DexClassLoader 脱壳 | DexClassLoader 构造函数 | 参考 Dalvik 的 DexClassLoader 类加载流程 )的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Android 逆向】ART 脱壳 (
- 下一篇: 【Android 逆向】ART 脱壳 (