前言
第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設備掃