《Android系统安全和反编译实战》目录

第1章 Android技术概述 1

1.1 智能手机系统介绍 1

1.2 搭建Android应用开发环境 2

1.2.1 安装Android SDK的

系统要求 2

1.2.2 安装JDK 2

1.2.3 获取并安装Eclipse和

Android SDK 5

1.2.4 安装ADT 7

1.2.5 设定Android SDK Home 8

1.2.6 验证开发环境 9

1.2.7 创建Android虚拟设备(AVD) 9

1.2.8 启动AVD模拟器 10

1.2.9 解决搭建环境过程中

的常见问题 12

第2章 Android技术核心框架分析 15

2.1 简析Android安装文件 15

2.1.1 Android SDK目录结构 15

2.1.2 android.jar及内部结构 16

2.1.3 阅读SDK帮助文档 16

2.1.4 常用的SDK工具 17

2.2 演示官方实例 19

2.3 剖析Android系统架构 23

2.3.1 Android体系结构介绍 23

2.3.2 Android应用工程

文件组成 25

2.4 简述五大组件 27

2.4.1 用Activity来表现界面 27

2.4.2 用Intent和Intent Filters

实现切换 28

2.4.3 Service为你服务 28

2.4.4 用Broadcast Intent/Receiver发送广播 29

2.4.5 用Content Provider

存储数据 29

2.5 进程和线程 29

2.5.1 先看进程 29

2.5.2 再看线程 30

2.5.3 应用程序的生命周期 30

第3章 获取并编译源码 33

3.1 在Linux系统中获取

Android源码 33

3.2 在Windows平台获取

Android源码 34

3.3 分析Android源码结构 36

3.3.1 应用程序 38

3.3.2 应用程序框架 39

3.3.3 系统服务 39

3.3.4 系统程序库 41

3.3.5 系统运行库 44

3.3.6 硬件抽象层 44

3.4 编译源码 45

3.4.1 搭建编译环境 46

3.4.2 开始编译 46

3.4.3 在模拟器中运行 47

3.4.4 常见的错误分析 48

3.4.5 实践演练——演示两种编译

Android程序的方法 49

3.5 编译Android Kernel 52

3.5.1 获取Goldfish内核代码 52

3.5.2 获取MSM内核代码 55

3.5.3 获取OMAP内核代码 55

3.5.4 编译Android的Linux

内核 55

3.6 编译源码生成SDK 57

第4章 Android系统的安全机制 61

4.1 Android安全机制概述 61

4.1.1 Android的安全机制模型 61

4.1.2 Android的安全框架概述 62

4.2 分析Linux系统的安全机制 63

4.2.1 Linux用户权限基础 63

4.2.2 进程 68

4.3 分析Android系统的安全机制 70

4.3.1 沙箱模型介绍 70

4.3.2 应用程序的安全机制 72

4.3.3 分区加载机制 73

第5章 内存安全机制——匿名共享

内存系统 74

5.1 分析Ashmem驱动程序 74

5.1.1 基础数据结构 74

5.1.2 初始化处理 75

5.1.3 打开匿名共享内存

设备文件 76

5.1.4 内存映射 78

5.1.5 实现读写操作 79

5.1.6 锁定和解锁 81

5.1.7 回收内存块 86

5.2 分析C++访问接口层 87

5.2.1 接口MemoryBase 87

5.2.2 客户端实现 90

5.2.3 接口MemoryBase 94

5.3 分析Java访问接口层 97

5.4 内存优化机制 100

5.4.1 sp和wp简析 100

5.4.2 详解智能指针 102

5.5 Android内存系统的安全

机制分析 118

5.5.1 Ashmem匿名共享内存

的机理 119

5.5.2 使用Low Memory Killer

机制实现安全和高效 119

第6章 Binder通信安全机制(上) 121

6.1 Binder机制基础 121

6.1.1 选择Binder机制的

原因——简洁快速、

低耗内存、更加安全 121

6.1.2 Binder安全机制的

必要性 122

6.1.3 Android的进程间通信

(IPC)机制Binder 122

6.1.4 Service Manager是Binder

机制的上下文管理者 123

6.1.5 Service Manager服务 137

6.2 分析Binder驱动程序 140

6.2.1 分析数据结构 140

6.2.2 分析设备初始化 150

6.2.3 打开Binder设备文件 151

6.2.4 内存映射 152

6.2.5 释放物理页面 156

6.2.6 分配内核缓冲区 157

6.2.7 释放内核缓冲区 158

6.2.8 查询内核缓冲区 160

第7章 Binder通信安全机制(下) 162

7.1 Binder封装库 162

7.1.1 类BBinder 163

7.1.2 类BpRefBase 165

7.1.3 类IPCThreadState 166

7.2 初始化Java层Binder框架 168

7.3 分析MediaServer的通信机制 170

7.3.1 MediaServer的入口函数 170

7.3.2 ProcessState 171

7.3.3 defaultServiceManager 173

7.3.4 注册MediaPlayerService 179

7.3.5 分析StartThread Pool和

join Thread Pool 188

7.4 总结进程通信机制的安全性 190

7.4.1 进程先线程安全 190

7.4.2 远程过程调用机制

(RPC) 191

7.4.3 实现线程安全方法 192

7.4.4 Binder中的安全策略 193

第8章 Android虚拟机基础 194

8.1 Dalvik VM和JVM的差异 194

8.2 Dalvik虚拟机的主要特征 195

8.3 Dalvik VM架构 196

8.3.1 Dalvik虚拟机的代码结构 196

8.3.2 dx工具 198

8.3.3 Dalvik VM的进程管理 198

8.3.4 Android的初始化流程 198

8.4 Dalvik VM控制VM命令详解 199

8.4.1 基本命令 199

8.4.2 扩展的JNI检测 199

8.4.3 断言 200

8.4.4 字节码校验和优化 200

8.4.5 Dalvik VM的运行模式 201

8.4.6 死锁预测 201

8.4.7 dump堆栈追踪 202

8.4.8 dex文件和校验 202

8.4.9 产生标志位 202

8.5 Dalvik VM进程管理 202

8.5.1 Zygote基础 202

8.5.2 Dalvik的进程模型 211

8.5.3 Dalvik的进程通信 215

8.6 Zygote(孕育)进程 218

8.6.1 Zygote基础 218

8.6.2 分析Zygote的启动过程 219

第9章 Dalvik VM的运作流程 233

9.1 Dalvik VM相关的可执行程序 233

9.1.1 dalvikvm、dvz和

app_process简介 233

9.1.2 对比app_process和

dalvikvm的执行过程 234

9.2 初始化Dalvik VM 236

9.2.1 开始虚拟机的准备工作 236

9.2.2 初始化跟踪显示系统 237

9.2.3 初始化垃圾回收器 237

9.2.4 初始化线程列表和

主线程环境参数 237

9.2.5 分配内部操作方法的

表格内存 238

9.2.6 初始化虚拟机的指令码

相关的内容 238

9.2.7 分配指令寄存器状态

的内存 239

9.2.8 分配指令寄存器状态

的内存和最基本用的

Java库 239

9.2.9 初始化使用的Java类库

线程类 240

9.2.10 初始化虚拟机使用的

异常Java类库 241

9.2.11 初始化其他对象 242

9.3 启动Zygote 250

9.3.1 在init.rc中配置zygote

启动参数 250

9.3.2 启动Socket服务端口 250

9.3.3 加载preload-classes 251

9.3.4 加载preload-resources 252

9.4 启动

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,193评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,306评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,130评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,110评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,118评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,085评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,007评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,844评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,283评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,508评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,395评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,985评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,630评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,797评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,653评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,553评论 2 352

推荐阅读更多精彩内容