【Android 安全】DEX 加密 ( Application 替换 | Android 应用启动原理 )

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 【Android 安全】DEX 加密 ( Application 替换 | Android 应用启动原理 )

文章目录

一、Zygote 进程孵化器

二、应用启动概述



dex 解密时 , 需要将 代理 Application 替换为 真实 Application ; 替换 Application 首先要理解系统如何注册应用的 Application 的 ;






一、Zygote 进程孵化器


Zygote 进程孵化器 : Android 中的所有的进程 , 如 系统进程 , 应用进程 , SystemServer 进程 , 都是由 Zygote 调用 fork 方法创建的 ;



SystemServer 进程 : Android 手机开机后 , 就会启动 Zygote 进程 , 并且创建 SystemServer 进程 , SystemServer 进程就是 核心服务 所在进程 , 核心服务如 WindowsManagerService , PowerManagerService , ActivityManagerService 等系统服务 ;



ActivityManagerService 服务 : 简称 AMS , 该服务由 SystemServer 启动 , 其主要功能是 控制四大组件启动和调度工作 , 控制 应用程序的管理和调度工作 ;






二、应用启动概述


Android 启动流程涉及的源码 :


/frameworks/base/core/java/android/app/ActivityThread.java

/frameworks/base/core/java/android/app/ApplicationThreadNative.java

/frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java


在 Launcher 应用 ( 系统主界面 ) 中点击应用图标 , Launcher 应用会启动该 app ;



Launcher 应用通过 Instrumentation 经过一系列调用 , 获取 ActivityManagerService ;



在 ActivityManagerService 中调用 start() 方法 , 首先查看要启动的应用是否已经存在 ;

如果存在 , 就直接切换到前台 ;

如果不存在 , 则调用 Process 类 , 通过 Process 类调用 Zygote 的 fork 方法 , 创建一个进程 ;



Zygote 创建新的应用进程后 , 会调用 ActivityThread 的 main 函数 , 在该主函数中 , 会创建 ActivityThread 对象 , 然后启动 Looper.loop , 无限循环处理消息 ;



在 ActivityThread 中会调用 ActivityThread 对象的 attach 函数 , 在该函数中 , 通过 Binder 机制 , 调用 ActivityManagerProxy 的 attachApplication 方法 ;



之后通过一系列调用 , 通过 Binder 机制调用 ActivityThread 的 bindApplication 方法 , ActivityThread 会向其 Handler 发送 BIND_APPLICATION 消息 , 通过 handleMessage 方法调用 handleBindApplication 方法 , 此时真正的启动 Application ;



之前研究 UI 绘制流程时 , 看过一段 ActivityThread 绘制相关代码 , 参考博客 【Android 应用开发】UI绘制流程 ( 生命周期机制 | 布局加载机制 | UI 绘制流程 | 布局测量 | 布局摆放 | 组件绘制 | 瀑布流布局案例 )


目录
相关文章
|
6月前
|
安全 Android开发 Kotlin
Android经典实战之SurfaceView原理和实践
本文介绍了 `SurfaceView` 这一强大的 UI 组件,尤其适合高性能绘制任务,如视频播放和游戏。文章详细讲解了 `SurfaceView` 的原理、与 `Surface` 类的关系及其实现示例,并强调了使用时需注意的线程安全、生命周期管理和性能优化等问题。
239 8
|
24天前
|
算法 安全 Java
即时通讯安全篇(一):正确地理解和使用Android端加密算法
本文主要讨论针对Android这样的移动端应用开发时,如何正确的理解目前常用的加密算法,为诸如即时通讯应用的实战开发,如何在合适的场景下选择适合的算法,提供一些参考。
42 0
|
4月前
|
缓存 Java 数据库
Android的ANR原理
【10月更文挑战第18天】了解 ANR 的原理对于开发高质量的 Android 应用至关重要。通过合理的设计和优化,可以有效避免 ANR 的发生,提升应用的性能和用户体验。
161 56
|
5月前
|
XML 前端开发 Android开发
Android View的绘制流程和原理详细解说
Android View的绘制流程和原理详细解说
90 3
|
6月前
|
ARouter 测试技术 API
Android经典面试题之组件化原理、优缺点、实现方法?
本文介绍了组件化在Android开发中的应用,详细阐述了其原理、优缺点及实现方式,包括模块化、接口编程、依赖注入、路由机制等内容,并提供了具体代码示例。
95 2
|
6月前
|
编解码 前端开发 Android开发
Android经典实战之TextureView原理和高级用法
本文介绍了 `TextureView` 的原理和特点,包括其硬件加速渲染的优势及与其他视图叠加使用的灵活性,并提供了视频播放和自定义绘制的示例代码。通过合理管理生命周期和资源,`TextureView` 可实现高效流畅的图形和视频渲染。
460 12
|
5月前
|
Java 调度 Android开发
Android面试题之Kotlin中async 和 await实现并发的原理和面试总结
本文首发于公众号“AntDream”,详细解析了Kotlin协程中`async`与`await`的原理及其非阻塞特性,并提供了相关面试题及答案。协程作为轻量级线程,由Kotlin运行时库管理,`async`用于启动协程并返回`Deferred`对象,`await`则用于等待该对象完成并获取结果。文章还探讨了协程与传统线程的区别,并展示了如何取消协程任务及正确释放资源。
91 0
|
7月前
|
算法 安全 数据安全/隐私保护
Android经典实战之常见的移动端加密算法和用kotlin进行AES-256加密和解密
本文介绍了移动端开发中常用的数据加密算法,包括对称加密(如 AES 和 DES)、非对称加密(如 RSA)、散列算法(如 SHA-256 和 MD5)及消息认证码(如 HMAC)。重点讲解了如何使用 Kotlin 实现 AES-256 的加密和解密,并提供了详细的代码示例。通过生成密钥、加密和解密数据等步骤,展示了如何在 Kotlin 项目中实现数据的安全加密。
273 1
|
7月前
|
算法 安全 数据安全/隐私保护
Android经典实战之常见的移动端加密算法和用kotlin进行AES-256加密和解密
本文介绍了移动端开发中常用的数据加密算法,包括对称加密(如 AES 和 DES)、非对称加密(如 RSA)、散列算法(如 SHA-256 和 MD5)及消息认证码(如 HMAC)。重点展示了如何使用 Kotlin 实现 AES-256 的加密和解密,提供了详细的代码示例。
136 2
|
7月前
|
存储 监控 数据库
Android经典实战之OkDownload的文件分段下载及合成原理
本文介绍了 OkDownload,一个高效的 Android 下载引擎,支持多线程下载、断点续传等功能。文章详细描述了文件分段下载及合成原理,包括任务创建、断点续传、并行下载等步骤,并展示了如何通过多种机制保证下载的稳定性和完整性。
215 0

热门文章

最新文章

  • 1
    Android历史版本与APK文件结构
  • 2
    java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
  • 3
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
  • 4
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 5
    【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
  • 6
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
  • 7
    使用SM4算法加密LUKS格式磁盘
  • 8
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
  • 9
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 10
    escrcpy:【技术党必看】Android开发,Escrcpy 让你无线投屏新体验!图形界面掌控 Android,30-120fps 超流畅!🔥