【Android 安全】DEX 加密 ( 不同 Android 版本的 DEX 加载 | Android 8.0 版本 DEX 加载分析 | Android 5.0 版本 DEX 加载分析 )
文章目錄
- 一、不同版本的 DEX 加載
- 1、Android 8.0 版本 DEX 加載分析
- 2、Android 6.0 版本 DEX 加載分析
- 3、Android 5.0 版本 DEX 加載分析
一、不同版本的 DEX 加載
不同 Android 版本 DexPathList 中的 Element[] dexElements 成員如何創建 ;
1、Android 8.0 版本 DEX 加載分析
Android 8.08.08.0 版本 DEX 加載分析 :
在 DexPathList 中 , Element[] dexElements 成員創建是調用 makePathElements 方法 生成上述 DEX 數組 ; makeDexElements 方法有 444 個參數 ;
8.08.08.0 系統 Element[] dexElements 生成 代碼示例如下 : ( 只展示相關源碼 )
/*package*/ final class DexPathList {/*** dex/resource (class path) 元素集合.* 應該調用 pathElements , 但是 Facebook 應用通過反射修改 dexElements .*/private final Element[] dexElements;public DexPathList(ClassLoader definingContext, String dexPath,String libraryPath, File optimizedDirectory) {// save dexPath for BaseDexClassLoaderthis.dexElements = makeDexElements(splitDexPath(dexPath), optimizedDirectory,suppressedExceptions, definingContext);} }參考源碼地址 : 8.0.0_r4/xref/libcore/dalvik/src/main/java/dalvik/system/DexPathList.java
2、Android 6.0 版本 DEX 加載分析
Android 6.06.06.0 版本 DEX 加載分析 :
在 DexPathList 中 , Element[] dexElements 成員創建是調用 makePathElements 方法 生成上述 DEX 數組 ;
6.06.06.0 系統 Element[] dexElements 生成 代碼示例如下 : ( 只展示相關源碼 )
/*package*/ final class DexPathList {/*** dex/resource (class path) 元素集合.* 應該調用 pathElements , 但是 Facebook 應用通過反射修改 dexElements .*/private final Element[] dexElements;public DexPathList(ClassLoader definingContext, String dexPath,String libraryPath, File optimizedDirectory) {// save dexPath for BaseDexClassLoaderthis.dexElements = makePathElements(splitDexPath(dexPath), optimizedDirectory,suppressedExceptions);} }參考源碼地址 : 6.0.1_r16/xref/libcore/dalvik/src/main/java/dalvik/system/DexPathList.java
3、Android 5.0 版本 DEX 加載分析
Android 5.05.05.0 版本 DEX 加載分析 :
在 DexPathList 中 , Element[] dexElements 成員創建是調用 makeDexElements 方法 生成上述 DEX 數組 ; makeDexElements 方法有 333 個參數 ;
5.05.05.0 系統 Element[] dexElements 生成 代碼示例如下 : ( 只展示相關源碼 )
/*package*/ final class DexPathList {/*** dex/resource (class path) 元素集合.* 應該調用 pathElements , 但是 Facebook 應用通過反射修改 dexElements .*/private final Element[] dexElements;public DexPathList(ClassLoader definingContext, String dexPath,String libraryPath, File optimizedDirectory) {this.dexElements = makeDexElements(splitDexPath(dexPath), optimizedDirectory,suppressedExceptions);} }參考源代碼 : 5.1.0_r3/xref/libcore/dalvik/src/main/java/dalvik/system/DexPathList.java
分析上面 333 個版本的 DEX 加載源碼 , 發現每個版本加載方法不同 , 這樣在開發多 DEX 加載時 , 就需要做相應的兼容 ;
總結
以上是生活随笔為你收集整理的【Android 安全】DEX 加密 ( 不同 Android 版本的 DEX 加载 | Android 8.0 版本 DEX 加载分析 | Android 5.0 版本 DEX 加载分析 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Android 安全】DEX 加密 (
- 下一篇: 【Android 安全】DEX 加密 (