开发者社区> 韩曙亮> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

【Android 安全】DEX 加密 ( 不同 Android 版本的 DEX 加载 | Android 8.0 版本 DEX 加载分析 | Android 5.0 版本 DEX 加载分析 )

简介: 【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.0 8.08.0 版本 DEX 加载分析 :


在 DexPathList 中 , Element[] dexElements 成员创建是调用 makePathElements 方法 生成上述 DEX 数组 ; makeDexElements 方法有 4 44 个参数 ;


8.0 8.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 BaseDexClassLoader
        this.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.0 6.06.0 版本 DEX 加载分析 :


在 DexPathList 中 , Element[] dexElements 成员创建是调用 makePathElements 方法 生成上述 DEX 数组 ;


6.0 6.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 BaseDexClassLoader
        this.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.0 5.05.0 版本 DEX 加载分析 :


在 DexPathList 中 , Element[] dexElements 成员创建是调用 makeDexElements 方法 生成上述 DEX 数组 ; makeDexElements 方法有 3 33 个参数 ;


5.0 5.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




分析上面 3 33 个版本的 DEX 加载源码 , 发现每个版本加载方法不同 , 这样在开发多 DEX 加载时 , 就需要做相应的兼容 ;


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【Android 安全】DEX 加密 ( Application 替换 | 分析 ContentProvider 组件中调用 getApplication() 获取的 Application 二 )(二)
【Android 安全】DEX 加密 ( Application 替换 | 分析 ContentProvider 组件中调用 getApplication() 获取的 Application 二 )(二)
37 0
【Android 安全】DEX 加密 ( Application 替换 | 兼容 ContentProvider 操作 | 源码资源 )(三)
【Android 安全】DEX 加密 ( Application 替换 | 兼容 ContentProvider 操作 | 源码资源 )(三)
37 0
【Android 安全】DEX 加密 ( Application 替换 | 兼容 ContentProvider 操作 | 源码资源 )(二)
【Android 安全】DEX 加密 ( Application 替换 | 兼容 ContentProvider 操作 | 源码资源 )(二)
47 0
【Android 安全】DEX 加密 ( Application 替换 | 兼容 ContentProvider 操作 | 源码资源 )(一)
【Android 安全】DEX 加密 ( Application 替换 | 兼容 ContentProvider 操作 | 源码资源 )(一)
34 0
【Android 安全】DEX 加密 ( Application 替换 | 分析 ContentProvider 组件中调用 getApplication() 获取的 Application 二 )(一)
【Android 安全】DEX 加密 ( Application 替换 | 分析 ContentProvider 组件中调用 getApplication() 获取的 Application 二 )(一)
44 0
【Android 安全】DEX 加密 ( Application 替换 | 分析 Activity 组件中获取的 Application | ActivityThread | LoadedApk )(三)
【Android 安全】DEX 加密 ( Application 替换 | 分析 Activity 组件中获取的 Application | ActivityThread | LoadedApk )(三)
38 0
【Android 安全】DEX 加密 ( Application 替换 | 分析 Activity 组件中获取的 Application | ActivityThread | LoadedApk )(二)
【Android 安全】DEX 加密 ( Application 替换 | 分析 Activity 组件中获取的 Application | ActivityThread | LoadedApk )(二)
22 0
【Android 安全】DEX 加密 ( Application 替换 | 分析 Activity 组件中获取的 Application | ActivityThread | LoadedApk )(一)
【Android 安全】DEX 加密 ( Application 替换 | 分析 Activity 组件中获取的 Application | ActivityThread | LoadedApk )(一)
62 0
【Android 安全】DEX 加密 ( Application 替换 | Android 应用启动原理 | ActivityThread 源码分析 )
【Android 安全】DEX 加密 ( Application 替换 | Android 应用启动原理 | ActivityThread 源码分析 )
25 0
【Android 安全】DEX 加密 ( Application 替换 | Android 应用启动原理 )
【Android 安全】DEX 加密 ( Application 替换 | Android 应用启动原理 )
25 0
+关注
韩曙亮
专注 Android 领域
2601
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载