第1章 概述
1.1 移动终端概述
1.1.1 移动终端的定义
1.1.2 移动终端的特点
1.2 典型智能手机操作系统介绍
1.2.1 iOS系统介绍
1.2.2 Android系统介绍
1.3 发展历程
1.4 移动终端面临的安全威胁
1.5 本书的主要内容
1.6 小结
1.7 习题
第2章 Android系统基本原理
2.1 Android系统架构
2.1.1 Android系统概述
2.1.2 Android系统架构的组成部分
2.1.3 Android系统的主要优势
2.2 Dalvik虚拟机简介
2.2.1 Dalvik虚拟机概述
2.2.2 Dalvik虚拟机采用的JIT技术
2.2.3 Java本地方法调用
2.2.4 Dalvik虚拟机汇编语言基础
2.2.5 Dalvik虚拟机的启动
2.3 ART虚拟机
2.3.1 ART虚拟机概述
2.3.2 ART虚拟机的启动
2.3.3 ART虚拟机与DVM、JVM的异同
2.4 Android系统可执行文件格式
2.4.1 dex文件格式
2.4.2 odex文件格式
2.4.3 so文件格式
2.4.4 oat文件格式
2.5 小结
2.6 习题
第3章 Android系统逆向分析的基础
3.1 静态分析基础
3.1.1 smali文件简介
3.1.2 smali文件格式
3.1.3 Android系统程序中的类
3.2 ARM汇编基础
3.2.1 ARM寄存器介绍
3.2.2 ARM处理器寻址方式
3.2.3 ARM指令集
3.2.4 一个简单的ARM汇编程序
3.3 常用分析工具
3.3.1 apktool
3.3.2 dex2jar和jdgui
3.3.3 JEB
3.3.4 IDA Pro
3.4 小结
3.5 习题
第4章 Android系统层次结构及原理
4.1 Android系统层次结构
4.1.1 Android系统层次结构概述
4.1.2 Linux内核层概述
4.1.3 本地库与运行环境层概述
4.1.4 应用框架层概述
4.1.5 应用层概述
4.2 Android系统典型技术介绍
4.2.1 进程与进程通信机制
4.2.2 内存管理——LMK机制
4.2.3 内存管理——Ashmem匿名共享内存机制
4.2.4 Android系统分区及加载
4.2.5 应用框架层核心组件
4.2.6 Zygote与应用程序加载过程
4.3 小结
4.4 习题
第5章 Android系统的安全机制
5.1 Android系统安全概述
5.1.1 Android系统的安全计划
5.1.2 Android系统的安全模型分层
5.2 Linux内核安全机制简述
5.2.1 文件系统安全
5.2.2 进程与内存空间安全
5.2.3 防范缓冲区溢出的保护机制
5.3 Android系统架构的安全机制
5.3.1 进程沙箱
5.3.2 应用权限
5.3.3 硬件安全技术——安全芯片
5.4 Android系统应用程序安全
5.4.1 应用程序签名
5.4.2 敏感数据访问控制
5.5 小结
5.6 习题
第6章 Android系统安全机制对抗技术
6.1 Android系统安全现状分析
6.2 内核层漏洞原理及利用
6.2.1 内核层漏洞简述
6.2.2 内核级典型漏洞
6.2.3 针对内核级缓解技术的攻击
6.3 本地库与运行环境层面的漏洞原理及利用
6.3.1 本地库与运行环境层面的漏洞简述
6.3.2 本地库典型漏洞
6.3.3 本地库提权漏洞分析
6.3.4 运行时漏洞
6.4 应用框架层面典型漏洞原理及利用
6.4.1 应用框架层面漏洞简述
6.4.2 权限泄露漏洞
6.4.3 敏感数据传输与访问漏洞
6.4.4 经典漏洞分析
6.5 第三方漏洞原理及利用
6.6 小结
6.7 习题
第7章 Android系统应用软件组件的漏洞挖掘技术
7.1 四大组件运行机理
7.1.1 组件注册
7.1.2 组件激活
7.1.3 Intent机制
7.1.4 任务栈
7.1.5 生命周期
7.1.6 权限机制
7.2 Android系统组件安全分析目标
7.2.1 用户数据
7.2.2 APP间的访问权限
7.2.3 敏感信息的通信
7.3 组件漏洞原理
7.3.1 组件暴露漏洞
7.3.2 组件权限泄露
7.3.3 组件劫持
7.4 组件漏洞挖掘方法
7.5 组件漏洞分析工具——Drozer
7.5.1 Drozer简介
7.5.2 Drozer实例分析
7.6 小结
7.7 习题
第8章 Android系统模糊测试——Fuzzing
8.1 Fuzzing基本概念
8.1.1 简介
8.1.2 Android平台Fuzzing的特点
8.2 Android平台Fuzzing的基本流程
8.2.1 Android本地调用Fuzzing
8.2.2 基于系统服务的Fuzzing
8.2.3 Android系统的文件格式Fuzzing
8.3 Android平台Fuzzing的输入生成
8.4 Android平台Fuzzing的传递输入与监控测试
8.4.1 日志监控
8.4.2 Crash的分析与调试
8.5 Android平台的典型Fuzzing 框架
8.5.1 MFFA
8.5.2 AFL Fuzzing
8.5.3 DroidFF
8.5.4 Peach
8.5.5 HonggFuzz交叉编译
8.6 Android平台Fuzzing的实例
8.6.1 针对Stagefright的文件Fuzzing
8.6.2 针对系统调用的内存Fuzzing
8.7 小结
8.8 习题
第9章 Android系统应用软件逆向破解技术
9.1 定位关键代码的主要方法
9.1.1 全局直接搜索法
9.1.2 代码注入法
9.1.3 Hook技术
9.1.4 栈跟踪法
9.1.5 同栈分析法
9.2 静态破解技术介绍
9.2.1 静态破解简介
9.2.2 IDA Pro静态破解
9.2.3 静态破解so文件
9.3 动态破解技术介绍
9.3.1 动态调试简介
9.3.2 动态调试smali源码
9.3.3 动态调试so文件
9.4 Android系统应用的典型破解场景
9.4.1 破解软件注册码
9.4.2 破解试用版软件
9.4.3 绕过网络验证
9.4.4 应用程序去广告
9.5 小结
9.6 习题
第10章 Android系统应用防护与对抗技术
10.1 Android系统软件加壳技术简介
10.2 dex加壳技术基础
10.3 so加壳技术基础
10.4 VMP加壳技术基础
10.4.1 方案一
10.4.2 方案二
10.5 常见的脱壳技术介绍
10.5.1 动态手工脱壳:拦截dex加载函数
10.5.2 定制Android系统
10.5.3 静态脱壳机
10.6 小结
10.7 习题
参考文献
展开