前言
第1章 Android架构与基础介绍
1.1 Android系统架构概述
1.1.1 Linux内核层
1.1.2 硬件抽象层(HAL)
1.1.3 系统库和Android运行时
1.1.4 应用程序框架层
1.1.5 应用程序层
1.2 Android的C/S架构和Binder
1.2.1 客户端/服务端架构
1.2.2 Binder机制
1.3 应用上下文(Context)
1.3.1 Context结构
1.3.2 访问系统服务
1.4 SELinux的介绍与影响
1.4.1 SELinux在Android中的意义
1.4.2 SELinux的基本概念
1.4.3 从猫狗的例子看SELinux“类型强化”(MCS与MLS特性)
1.4.4 典型avc:denied日志分析
1.4.5 如何修改和定制SELinux策略
1.5 Android Verified Boot(AVB):设备完整性的“守门人”
1.5.1 AVB的核心设计
1.5.2 AVB的工作流程
1.5.3 AVB的三种验证模式
1.5.4 AVB的交互
1.5.5 AVB的版本演进
1.5.6 AVB的局限与破解
1.5.7 AVB验证失败的日志分析
1.6 Android安全模型:硬件可信执行环境(TEE)
1.6.1 Android安全模型演进与TEE介绍
1.6.2 Android不同版本对TEE的支持
1.6.3 典型TEE功能与使用场景
1.6.4 TEE代码使用介绍
1.6.5 TEE与安全元件的差异
1.6.6 安全等级介绍
1.7 Android权限模型
1.7.1 权限的分类
1.7.2 权限模型的演变
1.7.3 如何正确使用权限
1.8 Android的关键特性与其他系统的区别
1.8.1 Android与传统Linux系统的区别
1.8.2 Android与iOS系统的区别
1.8.3 对比总结:Android的独特性
第2章 动态代理与VirtualApp简介
2.1 动态代理介绍
2.2 Java中的动态代理
2.2.1 动态代理的使用示例
2.2.2 动态代理的使用场景
2.2.3 动态代理的局限性
2.2.4 Android中的动态代理
2.3 VirtualApp剖析
2.3.1 VirtualApp的实现机制
2.3.2 VirtualApp的局限性
2.4 相关知识与参考
2.5 小结
第3章 Android Hook技术详解
3.1 Java Hook概述
3.1.1 Android Java Hook使用场景
3.1.2 常见的Java Hook框架
3.1.3 Java Hook的原理
3.1.4 Java Hook与ART优化机制的关系
3.2 常见的Java Hook实现方式
3.2.1 基于art_method的手动替换
3.2.2 基于字节码/.dex文件的修补
3.3 JVMTI
3.3.1 JVMTI的常见功能
3.3.2 JVMTI Agent开发介绍
3.3.3 JVMTI实现内存漫游功能介绍
3.4 Android热修复
3.4.1 .dex方法指令修改
3.4.2 .dex替换
3.5 Native Hook概述
3.6 Inline Hook
3.6.1 Inline Hook的实现原理
3.6.2 Inline Hook的优缺点
3.6.3 ARM64架构下Inline Hook实现
3.6.4 ARM32/ARM64 Hook差异
3.6.5 Inline Hook Dobby
3.7 GOT Hook
3.7.1 GOT/PLT
3.7.2 GOT Hook实现原理
3.7.3 GOT Hook的优缺点
3.7.4 bhook实现
3.8 异常Hook
3.8.1 Linux基础知识
3.8.2 异常Hook原理概述
3.8.3 异常Hook实现原理
3.8.4 异常Hook的优缺点
3.8.5 SandHook的异常Hook实现分析
3.9 硬件断点Hook
3.9.1 硬件断点Hook的原理与流程
3.9.2 硬件断点Hook的优缺点
3.9.3 硬件断点Hook的实现思路
第4章 Android设备指纹
4.1 Android设备指纹衡量标准
4.2 Android设备指纹使用场景
4.3 Android设备指纹发展史
4.3.1 第一代:单一或少数关键字段
4.3.2 第二代:多字段聚合与加权
4.3.3 第三代:模型化与智能识别
4.4 Android设备指纹分类
4.5 AndroidSystemService指纹
4.5.1 Settings.Secure
4.5.2 系统设置相关
4.5.3 蓝牙相关
4.5.4 IMEI(International Mobile Equipment Identity)
4.5.5 IMSI(International Mobile Subscriber Identity)
4.5.6 ICCID(Integrated Circuit Card Identifier)
4.5.7 LineNumber(手机号码)
4.5.8 第三方系统账号
4.5.9 App包相关信息
4.6 Android Kernel指纹
4.6.1 网络MAC地址
4.6.2 serial_number(SoC序列号)
4.6.3 IPv6与IPv4
4.6.4 系统文件信息
4.7 系统属性
4.7.1 开机时间
4.7.2 历史开机时间
4.7.3 getprop底层实现原理介绍
4.7.4 解析/dev/__properties__属性获取
4.8 Android第三方厂商指纹
4.8.1 OAID
4.8.2 AAID
4.9 Android DRM指纹
4.10 其他手机硬件指纹
4.10.1 传感器相关设备指纹
4.10.2 电池相关设备指纹
4.11 跨平台协同指纹
4.11.1 WebView与JavaScript的深度联动
4.11.2 原生与Web环境特征融合
4.11.3 BLE设备扫
展开