【Android 安全】DEX 加密 ( Application 替换 | ActivityThread 中的 mAllApplications 集合添加 Application )

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 【Android 安全】DEX 加密 ( Application 替换 | ActivityThread 中的 mAllApplications 集合添加 Application )

文章目录

一、 当前 Application 替换进度

二、 ActivityThread 中的 mAllApplications 集合添加 Application





一、 当前 Application 替换进度


上一篇博客 【Android 安全】DEX 加密 ( Application 替换 | 加密不侵入原则 | 替换 ActivityThread 的 mInitialApplication 成员 ) 替换了 ActivityThread 的 mInitialApplication 成员 , 本博客中继续向下替换剩余的 Application ;



替换进度如下 :


替换进度如下 :


① ContextImpl 的 private Context mOuterContext 成员是 kim.hsl.multipledex.ProxyApplication 对象 ; ( 已完成 )


② ActivityThread 中的 Application mInitialApplication 成员是 kim.hsl.multipledex.ProxyApplication 对象 ; ( 已完成 )


③ ActivityThread 中的 ArrayList<Application> mAllApplications 集合中添加了 kim.hsl.multipledex.ProxyApplication 对象 ;


④ LoadedApk 中的 mApplication 成员是 kim.hsl.multipledex.ProxyApplication 对象 ;






二、 ActivityThread 中的 mAllApplications 集合添加 Application


向 ActivityThread 中的 ArrayList<Application> mAllApplications 集合中添加了 kim.hsl.multipledex.ProxyApplication 对象 ;


首先 , 获取 ActivityThread 对象 ;


ActivityThread 之前已经获取过了 , 从 从 ContextImpl 对象中获取其 ActivityThread mMainThread 成员变量就是 ActivityThread , 参考 【Android 安全】DEX 加密 ( Application 替换 | 加密不侵入原则 | 替换 ActivityThread 的 mInitialApplication 成员 ) 博客 ;



然后 , 获取 ActivityThread 的 ArrayList<Application> mAllApplications 成员 , 该成员是一个集合 , mAllApplications 成员是私有的 , 设置可访问性 ;


       

// 获取 ActivityThread 中的 mAllApplications 成员
            Field mAllApplicationsField =
                    activityThreadClass.getDeclaredField("mAllApplications");
            // mAllApplications 成员是私有的 , 设置可访问性
            mAllApplicationsField.setAccessible(true);



最后 , 获取 ActivityThread 中的 ArrayList<Application> mAllApplications 队列 , 并向其中添加真实的 Application ;


       

// 获取 ActivityThread 中的 ArrayList<Application> mAllApplications 队列
            ArrayList<Application> mAllApplications =
                    (ArrayList<Application>) mAllApplicationsField.get(mMainThread);
            // 将真实的 Application 添加到上述队列中
            mAllApplications.add(delegate);



本步骤代码示例 :


         

// III . 替换 ② ActivityThread 中的 ArrayList<Application> mAllApplications
            //                    集合中添加了 kim.hsl.multipledex.ProxyApplication 对象 ;
            // 获取 ActivityThread 中的 mAllApplications 成员
            Field mAllApplicationsField =
                    activityThreadClass.getDeclaredField("mAllApplications");
            // mAllApplications 成员是私有的 , 设置可访问性
            mAllApplicationsField.setAccessible(true);
            // 获取 ActivityThread 中的 ArrayList<Application> mAllApplications 队列
            ArrayList<Application> mAllApplications =
                    (ArrayList<Application>) mAllApplicationsField.get(mMainThread);
            // 将真实的 Application 添加到上述队列中
            mAllApplications.add(delegate);



目录
相关文章
|
7月前
|
安全 Linux Android开发
Android 安全功能
Android 安全功能
83 0
|
2月前
|
安全 网络安全 Android开发
深度解析:利用Universal Links与Android App Links实现无缝网页至应用跳转的安全考量
【10月更文挑战第2天】在移动互联网时代,用户经常需要从网页无缝跳转到移动应用中。这种跳转不仅需要提供流畅的用户体验,还要确保安全性。本文将深入探讨如何利用Universal Links(仅限于iOS)和Android App Links技术实现这一目标,并分析其安全性。
261 0
|
4月前
|
算法 安全 数据安全/隐私保护
Android经典实战之常见的移动端加密算法和用kotlin进行AES-256加密和解密
本文介绍了移动端开发中常用的数据加密算法,包括对称加密(如 AES 和 DES)、非对称加密(如 RSA)、散列算法(如 SHA-256 和 MD5)及消息认证码(如 HMAC)。重点讲解了如何使用 Kotlin 实现 AES-256 的加密和解密,并提供了详细的代码示例。通过生成密钥、加密和解密数据等步骤,展示了如何在 Kotlin 项目中实现数据的安全加密。
145 1
|
4月前
|
算法 安全 数据安全/隐私保护
Android经典实战之常见的移动端加密算法和用kotlin进行AES-256加密和解密
本文介绍了移动端开发中常用的数据加密算法,包括对称加密(如 AES 和 DES)、非对称加密(如 RSA)、散列算法(如 SHA-256 和 MD5)及消息认证码(如 HMAC)。重点展示了如何使用 Kotlin 实现 AES-256 的加密和解密,提供了详细的代码示例。
79 2
|
5月前
|
存储 安全 数据安全/隐私保护
🔎Android安全攻防实战!守护你的应用数据安全,让用户放心使用!🛡️
【7月更文挑战第28天】在移动应用盛行的时代,确保Android应用安全性至关重要。本文以问答形式探讨了主要安全威胁(如逆向工程、数据窃取)及其对策。建议使用代码混淆、签名验证、数据加密等技术来增强应用保护。此外,还推荐了加密API、HTTPS通信、代码审计等措施来进一步加强安全性。综上所述,全面的安全策略对于构建安全可靠的应用环境必不可少。#Android #应用安全 #代码混淆 #数据加密
80 3
|
5月前
|
存储 安全 Android开发
安卓应用开发的安全之道
【7月更文挑战第4天】在数字时代,移动应用的安全性至关重要。本文将深入探讨在安卓平台上开发安全应用的最佳实践,包括代码混淆、数据存储加密、网络通信安全、权限管理以及定期的安全审计和更新策略。通过这些措施,开发者可以显著提高他们的应用抵御恶意攻击的能力,保护用户数据免受侵害。
|
6月前
|
安全 网络协议 网络安全
程序与技术分享:Android应用安全之数据传输安全
程序与技术分享:Android应用安全之数据传输安全
|
7月前
|
安全 算法 Android开发
安卓逆向工程与安全分析:保护您的应用知识产权
【4月更文挑战第14天】在数字时代,安卓应用开发者面临知识产权保护的挑战,主要源于安卓系统的开放性和逆向工程。逆向工程能揭示应用源代码,增加被盗用和安全风险。为应对挑战,开发者可采取代码混淆、加密、NDK开发、服务器端验证、定期更新和安全审计等策略。关注安全动态,利用第三方服务也是提升应用安全的重要途径。保护知识产权,确保应用安全,是开发者持续关注和努力的方向。
77 1
|
7月前
|
缓存 Android开发
Android——application全局类的使用
Android——application全局类的使用
|
7月前
|
缓存 Java 数据库
Android 性能优化: 请解释ANR(Application Not Responding)是什么,如何避免它?
Android 性能优化: 请解释ANR(Application Not Responding)是什么,如何避免它?
111 0