0%

hello word

基本信息

名称: Android驱动开发与移植实战详解
作者信息: 作者: 李骏 [ 中文 pdf ]

简单介绍

李骏、陈小玉编著的《Android驱动开发与移植实战详解》分为18章,依次讲解了Android系统的基本知识, Linux内核的基本知识,分析了Android系统的源码,深入分析HAL层的基本知识,GoldFish下的驱动、MSM内核和驱动、OMAP内核和驱动、显示系统驱动、输入系统驱动、振动器系统驱动、音频系统驱动和视频输出系统驱动,多媒体框架,传感器系统、照相机系统、Wi-Fi系统、蓝牙系统、GPS系统和电话系统的知识。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
第1章 迅猛发展的Android系统
第2章 简要分析Linux内核
第3章 开始分析Android源码
第4章 驱动移植
第5章 深入详解HAL层
第6章 常见的驱动平台
第7章 输入系统驱动
第8章 电话系统驱动
第9章 显示系统驱动
第10章 音频系统驱动
第11章 视频输出系统驱动
第12章 振动器系统驱动
第13章 Android多媒体插件框架
第14章 Camera照相机驱动
第15章 传感器系统驱动
第16章 Wi-Fi系统、蓝牙系统和GPS系统
第17章 振动器驱动和警报器驱动
第18章 光系统驱动和电池系统驱动

亚马逊链接

基本信息

名称: Android Security Cookbook
作者信息: 作者: Keith Makan [ 英文 pdf ]

简单介绍

目录

1
1: ANDROID DEVELOPMENT TOOLS 2: ENGAGING WITH APPLICATION SECURITY 3: ANDROID SECURITY ASSESSMENT TOOLS 4: EXPLOITING APPLICATIONS 5: PROTECTING APPLICATIONS 6: REVERSE ENGINEERING APPLICATIONS 7: SECURE NETWORKING 8: NATIVE EXPLOITATION AND ANALYSIS 9: ENCRYPTION AND DEVELOPING DEVICE ADMINISTRATION POLICIES

亚马逊链接

基本信息

名称: Android Development Tools for Eclipse
作者信息: 作者: Sanjay Shah [ 英文 pdf ]

简单介绍

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
Chapter 1: Installing Eclipse, ADT, and SDK
Introducing the Android platform
What is Android?
Preparing for Android development
Linking the Android SDK to the Eclipse
Summary
Chapter 2: Important Features of the IDE
Project explorer
Code editor
Graphical user interface designer
Properties window
Debugging pane
Dalvik Debug Monitor Server (DDMS)
SDK manager
Android virtual device manager
Running the Application
Getting help
Summary
Chapter 3: Creating a New Android Project
Creating a new Android application project
String resources
Using the graphical layout designer
The XML layout code editor
Widget interactions through the source code editor
Toast message
Running the application on the emulator
Running the application on an Android device
Summary
Chapter 4: Incorporating Multimedia Elements
Adding a TableLayout
Adding the image resources
Adding ImageView
Adding ImageButtons
Assigning the widget’s ID
ImageButtons and handling event
Adding audio
Adding another screen in the app
Adding HTML to WebView
Intent and Activity
The final product run and test
Summary
Chapter 5: Adding RadioButton, CheckBox, Menu, and Preferences
Creating a new project
Adding a RadioGroup, RadioButton, and a TextField
Adding a CheckBox
Adding a menu
Defining the Strings
Defining the Preference screen
Hook up
Run the application
Summary
Chapter 6: Handling Multiple Screen Types
Using wrap_content and match_parent
Fragment
Running the application
Optimizing for tablet
Persisting the state information during the state transition
Summary
Chapter 7: Adding an External Library
Creating an account at the AdMob website
Running the application
Summary
Chapter 8: Signing and Distributing APK
APK – Android package
Preparing for release
Using the Eclipse ADT for release
Publishing to Google Play
Summary

亚马逊链接

基本信息

名称: Android Database Programming
作者信息: 作者: Jason Wei [ 英文 pdf ]

简单介绍

目录

1
2
3
4
5
6
7
8
9
10
1: STORING DATA ON ANDROID
2: USING A SQLITE DATABASE
3: SQLITE QUERIES
4: USING CONTENT PROVIDERS
5: QUERYING THE CONTACTS TABLE
6: BINDING TO THE UI
7: ANDROID DATABASES IN PRACTICE
8: EXPLORING EXTERNAL DATABASES
9: COLLECTING AND STORING DATA
10: BRINGING IT TOGETHER

亚马逊链接

基本信息

名称: 深入理解Android(卷1)
作者信息: 作者: 邓凡平 [ 中文 pdf ]

简单介绍

《深入理解Android(卷1)》:结合实际应用开发需求,以情景分析的方式有针对性地对Android的源代码进行了十分详尽的剖析,深刻揭示Android系统的工作原理。机锋网、51CTO、开源中国社区等专业技术网站一致鼎力推荐!
在Android领域,无论是从事上层的应用开发.还是从事底层的系统级开发,如果想成为一名优秀的开发者,通过深入探究Android的源代码来了解Android的实现原理与工作机制也许是唯一的捷径。Android Framework是Android系统的基石,也是Android的核心之一,对于上层的应用开发者而言,深入理解它的工作原理是十分有必要的。Java世界是如何通过Zygote创建的?Handler和Looper是如何工作的?Binder的工作原理是什么?Audio系统和Surface系统的工作流程是怎
样的?Vold、Rild、MediaScanner等是如何实现
的?
这些内容是每一位从事Android应用开发的程序员都需要学习和掌握的。
《深入理解Android(卷1)》用情景分析的方式对Android的源代码进行了有针对性的分析,不仅全面而详细地分析了Framework层的工作机制和实现原理,而且还涉及Native层和Application层的重要内容。每一个功能模块的分析都从实际的使用场景和具体的问题入手,每一个知识点都力求做到把实现原理讲清楚,把工作机制说明白,尽量深入.竭力避免泛泛而谈。除此之外,《深入理解Android(卷1)》在重要章节还精心设计了“拓展思考”的内容,旨在进一步激发读者学习和研究Android源代码的兴趣。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
第1章 阅读前的准备工作 / 1
1.1 系统架构 / 2
1.1.1 Android系统架构 / 2
1.1.2 本书的架构 / 3
1.2 搭建开发环境 / 4
1.2.1 下载源码 / 4
1.2.2 编译源码 / 6
1.3 工具介绍 / 8
1.3.1 Source Insight介绍 / 8
1.3.3 Busybox的使用 / 11
1.4 本章小结 / 12
第2章 深入理解JNI / 13
2.1 JNI概述 / 14
2.2 学习JNI的实例:MediaScanner / 15
2.3 Java层的MediaScanner分析 / 16
2.3.1 加载JNI库 / 16
2.3.2 Java的native函数和总结 / 17
2.4 JNI层MediaScanner的分析 / 17
2.4.1 注册JNI函数 / 18
2.4.2 数据类型转换 / 22
2.4.3 JNIEnv介绍 / 24
2.4.4 通过JNIEnv操作jobject / 25
2.4.5 jstring介绍 / 27
2.4.6 JNI类型签名介绍 / 28
2.4.7 垃圾回收 / 29
2.4.8 JNI中的异常处理 / 32
2.5 本章小结 / 32
第3章 深入理解init / 33
3.1 概述 / 34
3.2 init分析 / 34
3.2.1 解析配置文件 / 38
3.2.2 解析service / 42
3.2.3 init控制service / 48
3.2.4 属性服务 / 52
3.3 本章小结 / 60
第4章 深入理解zygote / 61
4.1 概述 / 62
4.2 zygote分析 / 62
4.2.1 AppRuntime分析 / 63
4.2.2 Welcome to Java World / 68
4.2.3 关于zygote的总结 / 74
4.3 SystemServer分析 / 74
4.3.1 SystemServer的诞生 / 74
4.3.2 SystemServer的重要使命 / 77
4.3.3 关于 SystemServer的总结 / 83
4.4 zygote的分裂 / 84
4.4.1 ActivityManagerService发送请求 / 84
4.4.2 有求必应之响应请求 / 86
4.4.3 关于zygote分裂的总结 / 88
4.5 拓展思考 / 88
4.5.1 虚拟机heapsize的限制 / 88
4.5.2 开机速度优化 / 89
4.5.3 Watchdog分析 / 90
4.6 本章小结 / 93
第5章 深入理解常见类 / 95
5.1 概述 / 96
5.2 以“三板斧”揭秘RefBase、sp和wp / 96
5.2.1 第一板斧——初识影子对象 / 96
5.2.2 第二板斧——由弱生强 / 103
5.2.3 第三板斧——破解生死魔咒 / 106
5.2.4 轻量级的引用计数控制类LightRefBase / 108
5.2.5 题外话-三板斧的来历 / 109
5.3 Thread类及常用同步类分析 / 109
5.3.1 一个变量引发的思考 / 109
5.3.2 常用同步类 / 114
5.4 Looper和Handler类分析 / 121
5.4.1 Looper类分析 / 122
5.4.2 Handler分析 / 124
5.4.3 Looper和Handler的同步关系 / 127
5.4.4 HandlerThread介绍 / 129
5.5 本章小结 / 129
第6章 深入理解Binder / 130
6.1 概述 / 131
6.2 庖丁解MediaServer / 132
6.2.1 MediaServer的入口函数 / 132
6.2.2 独一无二的ProcessState / 133
6.2.3 时空穿越魔术-defaultServiceManager / 134
6.2.4 注册MediaPlayerService / 142
6.2.5 秋风扫落叶-StartThread Pool和join Thread Pool分析 / 149
6.2.6 你彻底明白了吗 / 152
6.3 服务总管ServiceManager / 152
6.3.1 ServiceManager的原理 / 152
6.3.2 服务的注册 / 155
6.3.3 ServiceManager存在的意义 / 158
6.4 MediaPlayerService和它的Client / 158
6.4.1 查询ServiceManager / 158
6.4.2 子承父业 / 159
6.5 拓展思考 / 162
6.5.1 Binder和线程的关系 / 162
6.5.2 有人情味的讣告 / 163
6.5.3 匿名Service / 165
6.6 学以致用 / 166
6.6.1 纯Native的Service / 166
6.6.2 扶得起的“阿斗”(aidl) / 169
6.7 本章小结 / 172
第7章 深入理解Audio系统 / 173
7.1 概述 / 174
7.2 AudioTrack的破解 / 174
7.2.1 用例介绍 / 174
7.2.2 AudioTrack(Java空间)分析 / 179
7.2.3 AudioTrack(Native空间)分析 / 188
7.2.4 关于AudioTrack的总结 / 200
7.3 AudioFlinger的破解 / 200
7.3.1 AudioFlinger的诞生 / 200
7.3.2 通过流程分析AudioFlinger / 204
7.3.3 audio_track_cblk_t分析 / 230
7.3.4 关于AudioFlinger的总结 / 234
7.4 AudioPolicyService的破解 / 234
7.4.1 AudioPolicyService的创建 / 235
7.4.2 重回AudioTrack / 245
7.4.3 声音路由切换实例分析 / 251
7.4.4 关于AudioPolicy的总结 / 262
7.5 拓展思考 / 262
7.5.1 DuplicatingThread破解 / 262
7.5.2 题外话 / 270
7.6 本章小结 / 272
第8章 深入理解Surface系统 / 273
8.1 概述 / 275
8.2 一个Activity的显示 / 275
8.2.1 Activity的创建 / 275
8.2.2 Activity的UI绘制 / 294
8.2.3 关于Activity的总结 / 296
8.3 初识Surface / 297
8.3.1 和Surface有关的流程总结 / 297
8.3.2 Surface之乾坤大挪移 / 298
8.3.3 乾坤大挪移的JNI层分析 / 303
8.3.4 Surface和画图 / 307
8.3.5 初识Surface小结 / 309
8.4 深入分析Surface / 310
8.4.1 与Surface相关的基础知识介绍 / 310
8.4.2 SurfaceComposerClient分析 / 315
8.4.3 SurfaceControl分析 / 320
8.4.4 writeToParcel和Surface对象的创建 / 331
8.4.5 lockCanvas和unlockCanvasAndPost分析 / 335
8.4.6 GraphicBuffer介绍 / 344
8.4.7 深入分析Surface的总结 / 353
8.5 SurfaceFlinger分析 / 353
8.5.1 SurfaceFlinger的诞生 / 354
8.5.2 SF工作线程分析 / 359
8.5.3 Transaction分析 / 368
8.5.4 关于SurfaceFlinger的总结 / 376
8.6 拓展思考 / 377
8.6.1 Surface系统的CB对象分析 / 377
8.6.2 ViewRoot的你问我答 / 384
8.6.3 LayerBuffer分析 / 385
8.7 本章小结 / 394
第9章 深入理解Vold和Rild / 395
9.1 概述 / 396
9.2 Vold的原理与机制分析 / 396
9.2.1 Netlink和Uevent介绍 / 397
9.2.2 初识Vold / 399
9.2.3 NetlinkManager模块分析 / 400
9.2.4 VolumeManager模块分析 / 408
9.2.5 CommandListener模块分析 / 414
9.2.6 Vold实例分析 / 417
9.2.7 关于Vold的总结 / 428
9.3 Rild的原理与机制分析 / 428
9.3.1 初识Rild / 430
9.3.2 RIL_startEventLoop分析 / 432
9.3.3 RIL_Init分析 / 437
9.3.4 RIL_register分析 / 444
9.3.5 关于Rild main函数的总结 / 447
9.3.6 Rild实例分析 / 447
9.3.7 关于Rild的总结 / 459
9.4 拓展思考 / 459
9.4.1 嵌入式系统的存储知识介绍 / 459
9.4.2 Rild和Phone的改进探讨 / 462
9.5 本章小结 / 463
第10章 深入理解MediaScanner / 464
10.1 概述 / 465
10.2 android.process.media分析 / 465
10.2.1 MSR模块分析 / 466
10.2.2 MSS模块分析 / 467
10.2.3 android.process.media媒体扫描工作的流程总结 / 471
10.3 MediaScanner分析 / 472
10.3.1 Java层分析 / 472
10.3.2 JNI层分析 / 476
10.3.3 PVMediaScanner分析 / 479
10.3.4 关于MediaScanner的总结 / 485
10.4 拓展思考 / 486
10.4.1 MediaScannerConnection介绍 / 486
10.4.2 我问你答 / 487
10.5 本章小结 / 488

亚马逊链接

基本信息

名称: 深入理解Android:卷2
作者信息: 作者: 邓凡平 [ 中文 pdf ]

简单介绍

《深入理解Android:卷2》编辑推荐:经典畅销书《深入理解Android:卷I》姊妹篇,51CTO移动开发频道和开源中国社区一致鼎力推荐!从系统设计者的角度对Java Framework包含的重要模块和服务的源代码进行细致剖析,深刻揭示其实现原理和工作机制。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
前言
第1章 搭建Android源码工作环境
1.1 Android系统架构
1.2 搭建开发环境
1.2.1 下载源码
1.2.2 编译源码
1.2.3 利用Eclipse调试system_process
1.3 本章小结
第2章 深入理解Java Binder和MessageQueue
2.1 概述
2.2 Java层中的Binder架构分析
2.2.1 Binder架构总览
2.2.2 初始化Java层Binder框架
2.2.3 addService实例分析
2.2.4 Java层Binder架构总结
2.3 心系两界的MessageQueue
2.3.1 MessageQueue的创建
2.3.2 提取消息
2.3.3 nativePollOnce函数分析
2.3.4 MessageQueue总结
2.4 本章小结
第3章 深入理解SystemServer
3.1 概述
3.2 SystemServer分析
3.2.1 main函数分析
3.2.2 Service群英会
3.3 EntropyService分析
3.4 DropBoxManagerService分析
3.4.1 DBMS构造函数分析
3.4.2 dropbox日志文件的添加
3.4.3 DBMS和settings数据库
3.5 DiskStatsService和DeviceStorageMonitorService分析
3.5.1 DiskStatsService分析
3.5.2 DeviceStorageManagerService分析
3.6 SamplingProfilerService分析
3.6.1 SamplingProfilerService构造函数分析
3.6.2 SamplingProfilerIntegration分析
3.7 ClipboardService分析
3.7.1 复制数据到剪贴板
3.7.2 从剪切板粘贴数据
3.7.3 CBS中的权限管理
3.8 本章小结
第4章 深入理解PackageManagerService
4.1 概述
4.2 初识PackageManagerService
4.3 PKMS的main函数分析
4.3.1 构造函数分析之前期准备工作
4.3.2 构造函数分析之扫描Package
4.3.3 构造函数分析之扫尾工作
4.3.4 PKMS构造函数总结
4.4 APK Installation分析
4.4.1 adb install分析
4.4.2 pm分析
4.4.3 installPackageWithVerification函数分析
4.4.4 APK 安装流程总结
4.4.5 Verification介绍
4.5 queryIntentActivities分析
4.5.1 Intent及IntentFilter介绍
4.5.2 Activity信息的管理
4.5.3 Intent 匹配查询分析
4.5.4 queryIntentActivities总结
4.6 installd及UserManager介绍
4.6.1 installd介绍
4.6.2 UserManager介绍
4.7 本章学习指导
4.8 本章小结
第5章 深入理解PowerManagerService
5.1 概述
5.2 初识PowerManagerService
5.2.1 PMS构造函数分析
5.2.2 init分析
5.2.3 systemReady分析
5.2.4 BootComplete处理
5.2.5 初识PowerManagerService总结
5.3 PMS WakeLock分析
5.3.1 WakeLock客户端分析
5.3.2 PMS acquireWakeLock分析
5.3.3 Power类及LightService类介绍
5.3.4 WakeLock总结
5.4 userActivity及Power按键处理分析
5.4.1 userActivity分析
5.4.2 Power按键处理分析
5.5 BatteryService及BatteryStatsService分析
5.5.1 BatteryService分析
5.5.2 BatteryStatsService分析
5.5.3 BatteryService及BatteryStatsService总结
5.6 本章学习指导
5.7 本章小结
第6章 深入理解ActivityManagerService
6.1 概述
6.2 初识ActivityManagerService
6.2.1 ActivityManagerService的main函数分析
6.2.2 AMS的 setSystemProcess分析
6.2.3 AMS的 installSystemProviders函数分析
6.2.4 AMS的 systemReady分析
6.2.5 初识ActivityManagerService总结
6.3 startActivity分析
6.3.1 从am说起
6.3.2 AMS的startActivityAndWait函数分析
6.3.3 startActivityLocked分析
6.4 Broadcast和BroadcastReceiver分析
6.4.1 registerReceiver流程分析
6.4.2 sendBroadcast流程分析
6.4.3 BROADCAST_INTENT_MSG消息处理函数
6.4.4 应用进程处理广播分析
6.4.5 广播处理总结
6.5 startService之按图索骥
6.5.1 Service知识介绍
6.5.2 startService流程图
6.6 AMS中的进程管理
6.6.1 Linux进程管理介绍
6.6.2 关于Android中的进程管理的介绍
6.6.3 AMS进程管理函数分析
6.6.4 AMS进程管理总结
6.7 App的 Crash处理
6.7.1 应用进程的Crash处理
6.7.2 AMS的handleApplicationCrash分析
6.7.3 AppDeathRecipient binderDied分析
6.7.4 App的Crash处理总结
6.8 本章学习指导
6.9 本章小结
第7章 深入理解ContentProvider
7.1 概述
7.2 MediaProvider的启动及创建
7.2.1 Context的getContentResolver函数分析
7.2.2 MediaStore.Image.Media的query函数分析
7.2.3 MediaProvider的启动及创建总结
7.3 SQLite创建数据库分析
7.3.1 SQLite及SQLiteDatabase家族
7.3.2 MediaProvider创建数据库分析
7.3.3 SQLiteDatabase创建数据库的分析总结
7.4 Cursor 的query函数的实现分析
7.4.1 提取query关键点
7.4.2 MediaProvider 的query分析
7.4.3 query关键点分析
7.4.4 Cursor query实现分析总结
7.5 Cursor close函数实现分析
7.5.1 客户端close的分析
7.5.2 服务端close的分析
7.5.3 finalize函数分析
7.5.4 Cursor close函数总结
7.6 ContentResolver openAssetFileDescriptor函数分析
7.6.1 openAssetFileDescriptor之客户端调用分析
7.6.2 ContentProvider的 openTypedAssetFile函数分析
7.6.3 跨进程传递文件描述符的探讨
7.6.4 openAssetFileDescriptor函数分析总结
7.7 本章学习指导
7.8 本章小结
第8章 深入理解ContentService和AccountManagerService
8.1 概述
8.2 数据更新通知机制分析
8.2.1 初识ContentService
8.2.2 ContentResovler 的registerContentObserver分析
8.2.3 ContentResolver的 notifyChange分析
8.2.4 数据更新通知机制总结和深入探讨
8.3 AccountManagerService分析
8.3.1 初识AccountManagerService
8.3.2 AccountManager addAccount分析
8.3.3 AccountManagerService的分析总结
8.4 数据同步管理SyncManager分析
8.4.1 初识SyncManager
8.4.2 ContentResolver 的requestSync分析
8.4.3 数据同步管理SyncManager分析总结
8.5 本章学习指导
8.6 本章小结
“深入理解Android”系列书籍的规划路线图

亚马逊链接

基本信息

名称: 疯狂Android讲义(第2版)
作者信息: 作者: 李刚 [ 中文 pdf ]

简单介绍

《疯狂Android讲义(第2版)》第一版荣获“电子工业出版社最畅销图书奖”;累计印刷10次,销售码洋二百余万,是Android学习、开发人员必备之选。
1.知识全面,覆盖面广
《疯狂Android讲义(第2版)》深入阐述了Android应用开发的Activity、Service、BroadcastReceiver与ContentProvider四大组件,并详细介绍了Android全部图形界面组件的功能和用法,Android各种资源的管理与用法,Android图形、图像处理,事件处理,Android输入/输出处理,视频/视频等多媒体开发,OpenGL-ES开发,网络通信,传感器和GPS开发等内容,全面覆盖Android官方指南,在某些内容上更加具体、深入。
2.内容实际,实用性强
《疯狂Android讲义(第2版)》并不局限于枯燥的理论介绍,而是采用了“项目驱动”的方式来讲授知识点,《疯狂Android讲义(第2版)》近百个实例,几乎每个知识点都可找到对应的参考实例。《疯狂Android讲义(第2版)》最后还提供了“疯狂连连看”、“电子拍卖系统Android客户端”两个应用,具有极高的参考价值。
3.讲解详细,上手容易
《疯狂Android讲义(第2版)》保持了“疯狂Java体系”的一贯风格:操作步骤详细、编程思路清晰,语言平实。只要读者有一定的Java编程基础,阅读《疯狂Android讲义(第2版)》将可以很轻松地上手Android应用开发;学习完《疯狂Android讲义(第2版)》最后的两个案例后,读者即可完全满足实际企业中Android应用开发的要求。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
第1章 Android应用与开发环境
1.1 Android的发展和历史
1.1.1 Android的发展和简介
1.1.2 Android平台架构及特性
1.2 搭建Android开发环境
1.2.1 下载和安装Android SDK
1.2.2 安装运行、调试环境
1.2.3 安装Eclipse和ADT插件
1.3 Android常用开发工具的用法
1.3.1 在命令行创建、删除和 浏览AVD
1.3.2 使用Android模拟器 (Emulator)
1.3.3 使用DDMS进行调试
1.3.4 Android Debug Bridge (ADB)的用法
1.3.5 使用DX编译Android应用
1.3.6 使用Android Asset Packaging Tool(AAPT)打包资源
1.3.7 使用mksdcard管理虚拟SD卡
1.4 开始第一个Android应用
1.4.1 使用Eclipse开发第一个 Android应用
1.4.2 通过ADT运行Android应用
1.5 Android应用结构分析
1.5.1 创建一个Android应用
1.5.2 自动生成的R.java
1.5.3 res目录说明
1.5.4 Android应用的清单文件:AndroidManifest.xml
1.5.5 应用程序权限说明
1.6 Android应用的基本组件介绍
1.6.1 Activity和View
1.6.2Service
1.6.3 BroadcastReceiver
1.6.4 ContentProvider
1.6.5 Intent和IntentFilter
1.7 签名Android应用程序
1.7.1 在Eclipse中对Android 应用签名
1.7.2 使用命令对APK包签名
1.8 本章小结
第2章 Android应用的界面编程
2.1 界面编程与视图(View)组件
2.1.1 视图组件与容器组件
2.1.2 使用XML布局文件控制UI 界面
2.1.3 在代码中控制UI界面
2.1.4 使用XML布局文件和Java 代码混合控制UI界面
2.1.5 开发自定义View
2.2 第1组UI组件:布局管理器
2.2.1 线性布局
2.2.2 表格布局
2.2.3 帧布局
2.2.4 相对布局
2.2.5 Android 4.0新增的网格布局
2.2.6 绝对布局
2.3 第2组UI组件:TextView 及其子类
2.3.1 文本框(TextView)与编辑框(EditText)的功能和用法
2.3.2 EditText的功能与用法
2.3.3 按钮(Button)组件的 功能和用法
2.3.4 使用9Patch图片作为按 钮背景
2.3.5 单选按钮(RadioButton)与 复选框(CheckBox)的功能与 用法
2.3.6 状态开关按钮(ToggleButton)与 开关(Switch)的功能与用法
2.3.7 时钟(AnalogClock和 DigitalClock)的功能与用法
2.3.8 计时器(Chronometer)
2.4 第3组UI组件:ImageView 及其子类
2.5 第4组UI组件:AdapterView 及子类
2.5.1 列表视图(ListView)和 ListActivity
2.5.2 Adapter接口及实现类
2.5.3 自动完成文本框(AutoCompleteTextView)的功能和用法
2.5.4 网格视图(GridView) 功能和用法
2.5.5 可展开的列表组件(ExpandableListView)
2.5.6 Spinner的功能和用法
2.5.7 画廊视图(Gallery)的 功能和用法
2.5.8 AdapterViewFlipper的 功能与用法
2.5.9StackView的功能与用法
2.6 第5组UI组件:ProgressBar 及其子类
2.6.1 进度条(ProgressBar)的 功能与用法
2.6.2 拖动条(SeekBar)的 功能和用法
2.6.3 星级评分条(RatingBar)的 功能和用法
2.7 第6组UI组件:ViewAnimator 及其子类
2.7.1 ViewSwitcher的功能与用法
2.7.2 图像切换器(ImageSwitcher)的 功能与用法
2.7.3 文本切换器(TextSwitcher)的 功能与用法
2.7.4 ViewFlipper的功能与用法
2.8 各种杂项组件
2.8.1 使用Toast显示提示信息框
2.8.2 日历视图(CalendarView) 组件的功能和用法
2.8.3 日期、时间选择器(DatePicker和 TimePicker)的功能和用法
2.8.4 数值选择器(NumberPicker)的 功能与用法
2.8.5 搜索框(SearchView)的功能与用法
2.8.6 选项卡(TabHost)的功能和用法
2.8.7 滚动视图(ScrollView)的 功能和用法
2.8.8 Notification的功能与用法
2.9 对话框
2.9.1 使用AlertDialog创建对话框
2.9.2 对话框风格的窗口
2.9.3 使用PopupWindow
2.9.4 使用DatePickerDialog、TimePickerDialog
2.9.5 使用ProgressDialog创建 进度对话框
2.10 菜单
2.10.1 选项菜单和子菜单 (SubMenu)
2.10.2 使用监听器来监听菜单事件
2.10.3 创建复选菜单项和 单选菜单项
2.10.4 设置与菜单项关联的Activity
2.10.5 上下文菜单
2.10.6 使用XML文件定义菜单
2.10.7 使用PopupMenu创建 弹出式菜单
2.11 使用活动条(ActionBar)
2.11.1 启用ActionBar
2.11.2 使用ActionBar显示 选项菜单
2.11.3 启用程序图标导航
2.11.4 添加Action View
2.11.5 使用ActionBar实现Tab 导航
2.11.6 使用ActionBar实现下拉式导航
2.12 本章小结
第3章 Android的事件处理
3.1 Android事件处理概述
3.2 基于监听的事件处理
3.2.1 监听的处理模型
3.2.2 事件和事件监听器
3.2.3 内部类作为事件监听器类
3.2.4 外部类作为事件监听器类
3.2.5 Activity本身作为事件监听器
3.2.6 匿名内部类作为事件监听器类
3.2.7 直接绑定到标签
3.3 基于回调的事件处理
3.3.1 回调机制与监听机制
3.3.2 基于回调的事件传播
3.3.3 重写onTouchEvent方法 响应触摸屏事件
3.4 响应的系统设置的事件
3.4.1 Configuration类简介
3.4.2 重写onConfigurationChanged 响应系统设置更改
3.5 Handler消息传递机制
3.5.1 Handler类简介
3.5.2 Handler、Loop、MessageQueue的 工作原理
3.6 异步任务(AsyncTask)
3.7 本章小结
第4章 深入理解Activity与 Fragment
4.1 建立、配置和使用Activity
4.1.1 Activity
4.1.2 配置Activity
4.1.3 启动、关闭Activity
4.1.4 使用Bundle在Activity之间 交换数据
4.1.5 启动其他Activity并返回结果
4.2 Activity的回调机制
4.3 Activity的生命周期与加载模式
4.3.1 Activity的生命周期演示
4.3.2 Activity与Servlet的相似性与 区别
4.3.3 Activity的4种加载模式
4.4 Fragment详解
4.4.1 Fragment概述及其设计哲学
4.4.2 创建Fragment
4.4.3 Fragment与Activity通信
4.4.4 Fragment管理与Fragment 事务
4.5 Fragment的生命周期
4.6 本章小结
第5章 使用Intent和IntentFilter 进行通信
5.1 Intent对象详解
5.1.1 使用Intent启动系统组件
5.2 Intent的属性及intent—filter配置
5.2.1 Component属性
5.2.2 Action、Category属性与 intent—filter配置
5.2.3 指定Action、Category调用系统Activity
5.2.4 Data、Type属性与intent—filter 配置
5.2.5 Extra属性
5.2.6 Flag属性
5.3 使用Intent创建Tab页面
5.4 本章小结
第6章 Android应用的资源
6.1 资源的类型及存储方式
6.1.1 资源的类型以及存储方式
6.1.2 使用资源
6.2 使用字符串、颜色、尺寸资源
6.2.1 颜色值的定义
6.2.2 定义字符串、颜色、尺寸 资源文件
6.2.3 使用字符串、颜色、尺寸 资源
6.3 数组(Array)资源
6.4 使用(Drawable)资源
6.4.1 图片资源
6.4.2 StateListDrawable资源
6.4.3 LayerDrawable资源
6.4.4 ShapeDrawable资源
6.4.5 ClipDrawable资源
6.4.6 AnimationDrawable资源
6.5 属性动画(Property Animation)资源
6.6 使用原始XML资源
6.6.1 定义原始XML资源
6.6.2 使用原始XML文件
6.7 使用布局(Layout)资源
6.8 使用菜单(Menu)资源
6.9 样式(Style)和主题(Theme) 资源
6.9.1 样式资源
6.9.2 主题资源
6.10 属性(Attribute)资源
6.11 使用原始资源
6.12 国际化和资源自适应
6.12.1 Java国际化的思路
6.12.2 Java支持的语言和国家
6.12.3 完成程序国际化
6.12.4 为Android应用提供国际化资源
6.12.5 国际化Android应用
6.13 自适应不同屏幕的资源
6.14 本章小结
第7章 图形与图像处理
7.1 使用简单图片
7.1.1 使用Drawable对象
7.1.2 Bitmap和BitmapFactory
7.2 绘图
7.2.1 Android绘图基础:Canvas、 Paint等
7.2.2 Path类
7.2.3 绘制游戏动画
7.3 图形特效处理
7.3.1 使用Matrix控制变换
7.3.2 使用drawBitmapMesh 扭曲图像
7.3.3 使用Shader填充图形
7.4 逐帧(Frame)动画
7.4.1 AnimationDrawable与 逐帧动画
7.5 补间(Tween)动画
7.5.1 Tween动画与Interpolator
7.5.2 位置、大小、旋转度、 透明度改变的补间动画
7.5.3 自定义补间动画
7.6 属性动画
7.6.1 属性动画的API
7.6.2 使用属性动画
7.7 使用SurfaceView实现动画
7.7.1SurfaceView的绘图机制
7.8 本章小结
第8章 Android数据存储与IO
8.1 使用SharedPreferences
8.1.1 SharedPreferences与 Editor简介
8.1.2 SharedPreferences的存储位置和格式
8.1.3 读、写其他应用SharedPreferences
8.2 File存储
8.2.1 openFileOutput和 openFileInput
8.2.2 读写SD卡上的文件
8.3 SQLite数据库
8.3.1 SQLiteDatabase简介
8.3.2 创建数据库和表
8.3.3 使用SQL语句操作SQLite数据库
8.3.4 使用sqlite3工具
8.3.5 使用特定方法操作SQLite数据库
8.3.6 事务
8.3.7 SQLiteOpenHelper类
8.4 手势(Gesture)
8.4.1 手势检测
8.4.2 增加手势
8.4.3 识别用户的手势
8.5 自动朗读(TTS)
8.6 本章小结
……
第9章 使用ContentProvider实现数据共享
第10章Service与BroadcastReceiver
第11章 多媒体应用开发
第12章 OpenGL与3D应用开发
第13章 Android网络应用
第14章 管理Android手机桌面
第15章 传感器应用开发
第16章 GPS应用开发
第17章 使用Google Map服务
第18章 疯狂连连看
第19章 电子拍卖系统

亚马逊链接

基本信息

名称: Android安全机制解析与应用实践
作者信息: 作者: 吴倩 [ 中文 pdf ]

简单介绍

《Android安全机制解析与应用实践》编辑推荐:原理分析透彻,结合Android系统源代码,从应用层、应用框架层、硬件抽象层、系统内核层等多角度剖析了Android的安全机制和实现原理,以及安全机制中存在的不足和潜在风险。
实用性强,不仅介绍了各种常用的实用分析工具、安全风险分析方法、安全策略,而且还针对Android在各种应用领域可能出现的安全问题给出了解决方案。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
推荐序
前言
第一部分 准备篇
第1章 Android基础/2
1.1 Android系统架构/2
1.1.1 Linux内核层/3
1.1.2 硬件抽象层/4
1.1.3 系统运行库层/5
1.1.4 应用程序框架层/7
1.1.5 应用层/7
1.2 应用程序组件/8
1.3 Android系统启动/10
1.3.1 Linux系统启动/10
1.3.2 Android应用系统启动/15
1.4 Android系统升级/17
1.4.1 Android数据线升级/17
1.4.2 AndroidSD卡升级/17
1.4.3 Android在线升级/18
1.5 本章小结/18
第2章 Android安全模型/19
2.1 Linux安全模型/20
2.1.1 用户与权限/21
2.1.2 进程与内存空间/24
2.2 Android安全机制/26
2.2.1 进程沙箱/26
2.2.2 应用权限/28
2.2.3 进程通信/29
2.2.4 内存管理/32
2.2.5 Android系统分区及加载/35
2.2.6 应用程序签名/36
2.3 Android开发工具提供的安全性机制/37
2.4 本章小结/38
第二部分 原理篇
第3章 Android安全机制源代码分析/40
3.1 文件系统权限的代码实现/41
3.2 进程通信机制的代码实现/44
3.2.1 匿名共享内存/44
3.2.2 Binder机制/50
3.3 Android应用程序安全机制/56
3.3.1 Android应用程序权限机制的源代码分析/56
3.3.2 应用程序签名机制实现的源代码分析/62
3.4 本章小结/65
第4章 Android安全性分析/66
4.1 Android系统安全分析/66
4.1.1 Linux内核/66
4.1.2 系统库/67
4.1.3 Dalvik虚拟机/67
4.2 Android应用安全分析/68
4.2.1 应用程序权限/68
4.2.2 应用程序安装/69
4.2.3 网络浏览器/70
4.2.4 数据库与SQL注入/70
4.2.5 软件更新/71
4.3 硬件安全分析/72
4.4 恶意软件/72
4.4.1 Linux恶意软件/73
4.4.2 Android恶意软件/74
4.5 安全风险与漏洞/75
4.5.1 已知安全风险/75
4.5.2 潜在安全漏洞/76
4.6 本章小结/76
第5章 Android实用安全分析工具/78
5.1 实用分析方法/78
5.1.1 Linux系统信息分析/79
5.1.2 Android应用信息分析/86
5.2 实用分析工具/92
5.2.1 Android系统调试工具/92
5.2.2 dumpsys工具/103
5.2.3 应用程序分析工具/104
5.3 专业分析工具与技术/107
5.3.1 常用逻辑分析工具与技术/107
5.3.2 常用物理分析工具与技术/108
5.4 本章小结/110
第三部分 实践篇
第6章 SEAndroid—增强Android安全性/114
6.1 内核安全风险与增强策略/114
6.2 SEAndroid概述/114
6.3 SEAndroid编译与安装/115
6.3.1 源代码获取/115
6.3.2 源代码结构/116
6.3.3 源代码编译和安装/118
6.4 SEAndroid安全策略概述/124
6.4.1 seapp_contexts文件/125
6.4.2 property_contexts文件/125
6.4.3 mac_permissions.xml文件/126
6.5 SEAndroid兼容性测试工具/127
6.6 SEAndroid的权限限制策略/127
6.6.1 强制限制的权限模型/128
6.6.2 安装时MAC/128
6.6.3 权限取消/128
6.6.4 权限标签传播/129
6.6.5 SEAndroid的其他类与权限策略/129
6.7 本章小结/129
第7章 Android加密文件系统/130
7.1 加密文件系统概述/130
7.2 加密算法介绍/131
7.2.1 AES加密算法/131
7.2.2 加密模式/131
7.3 加密文件系统源代码分析/133
7.3.1 Linux内核的dm—crypt/134
7.3.2 Android的vold/138
7.3.3 工作流程分析/145
7.4 加密文件系统配置/148
7.4.1 块设备选取与配置/148
7.4.2 init.rc配置/149
7.5 本章小结/150
第8章 Android应用安全实用解决方案/151
8.1 安全风险控制策略/151
8.2 应用权限控制/154
8.2.1 权限控制策略/154
8.2.2 权限定义和运用/156
8.3 应用程序签名/159
8.3.1 数字签名基础知识/160
8.3.2 数字签名算法/160
8.3.3 数字签名使用方式/163
8.3.4 应用程序签名的实现/164
8.4 静态代码分析/166
8.5 防火墙/168
8.6 数据存储加密/170
8.7 应用程序组件开发的安全要点/172
8.7.1 私有组件与公有组件/172
8.7.2 Activity安全/173
8.7.3 Service安全/174
8.7.4 ContentProvider安全/175
8.7.5 BroadcastReceiver安全/180
8.7.6 Intent安全/182
8.7.7 Binder安全/184
8.8 本章小结/185
第9章 Android的无线通信安全/186
9.1 无线移动通信的安全威胁与防范/186
9.1.1 语音通信的空口加密与明文传输/187
9.1.2 短信与彩信的存储转发机制/188
9.1.3 传统的搭线窃听与合法监控/189
9.1.4 端到端的通信安全机制/189
9.2 Android的无线移动电话系统/190
9.2.1 无线移动电话系统的结构/190
9.2.2 无线移动电话系统的RIL层实现/190
9.2.3 无线移动电话系统的应用层框架/193
9.3 加密短信和彩信收发/196
9.3.1 普通短信与彩信的收发流程/196
9.3.2 短信与彩信的数字加密处理/208
9.3.3 加密短信与彩信的传输处理/210
9.3.4 加密短信与彩信的存储与调阅/210
9.4 加密实时语音通信/214
9.4.1 AT命令与电话建立流程/214
9.4.2 Android音频系统的电话部分/216
9.4.3 电话状态下音频通道的设置/217
9.4.4 电话音频加密处理/218
9.5 本章小结/222

亚马逊链接

基本信息

名称: Android Hacker’s Handbook
作者信息: 作者: Joshua J. Drake [ 英文 pdf ]

简单介绍

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
Introduction xxv
Chapter 1 Looking at the Ecosystem 1
Understanding Android’s Roots 1
Company History 2
Version History 2
Examining the Device Pool 4
Open Source, Mostly 7
Understanding Android Stakeholders 7
Google 8
Hardware Vendors 10
Carriers 12
Developers 13
Users 14
Grasping Ecosystem Complexities 15
Fragmentation 16
Compatibility 17
Update Issues 18
Security versus Openness 21
Public Disclosures 22
Summary 23
Chapter 2 Android Security Design and Architecture 25
Understanding Android System Architecture 25
Understanding Security Boundaries and Enforcement 27
Android’s Sandbox 27
Android Permissions 30
Looking Closer at the Layers 34
Android Applications 34
The Android Framework 39
The Dalvik Virtual Machine 40
User-Space Native Code 41
The Kernel 49
Complex Security, Complex Exploits 55
Summary 56
Chapter 3 Rooting Your Device 57
Understanding the Partition Layout 58
Determining the Partition Layout 59
Understanding the Boot Process 60
Accessing Download Mode 61
Locked and Unlocked Boot Loaders 62
Stock and Custom Recovery Images 63
Rooting with an Unlocked Boot Loader 65
Rooting with a Locked Boot Loader 68
Gaining Root on a Booted System 69
NAND Locks, Temporary Root, and Permanent Root 70
Persisting a Soft Root 71
History of Known Attacks 73
Kernel: Wunderbar/asroot 73
Recovery: Volez 74
Udev: Exploid 74
Adbd: RageAgainstTheCage 75
Zygote: Zimperlich and Zysploit 75
Ashmem: KillingInTheNameOf and psneuter 76
Vold: GingerBreak 76
PowerVR: levitator 77
Libsysutils: zergRush 78
Kernel: mempodroid 78
File Permission and Symbolic Link–Related Attacks 79
Adb Restore Race Condition 79
Exynos4: exynos-abuse 80
Diag: lit / diaggetroot 81
Summary 81
Chapter 4 Reviewing Application Security 83
Common Issues 83
App Permission Issues 84
Insecure Transmission of Sensitive Data 86
Insecure Data Storage 87
Information Leakage Through Logs 88
Unsecured IPC Endpoints 89
Case Study: Mobile Security App 91
Profi ling 91
Static Analysis 93
Dynamic Analysis 109
Attack 117
Case Study: SIP Client 120
Enter Drozer 121
Discovery 121
Snarfing 122
Injection 124
Summary 126
Chapter 5 Understanding Android’s Attack Surface 129
An Attack Terminology Primer 130
Attack Vectors 130
Attack Surfaces 131
Classifying Attack Surfaces 133
Surface Properties 133
Classification Decisions 134
Remote Attack Surfaces 134
Networking Concepts 134
Networking Stacks 139
Exposed Network Services 140
Mobile Technologies 142
Client-side Attack Surface 143
Google Infrastructure 148
Physical Adjacency 154
Wireless Communications 154
Other Technologies 161
Local Attack Surfaces 161
Exploring the File System 162
Finding Other Local Attack Surfaces 163
Physical Attack Surfaces 168
Dismantling Devices 169
USB 169
Other Physical Attack Surfaces 173
Third-Party Modifi cations 174
Summary 174
Chapter 6 Finding Vulnerabilities with Fuzz Testing 177
Fuzzing Background 177
Identifying a Target 179
Crafting Malformed Inputs 179
Processing Inputs 180
Monitoring Results 181
Fuzzing on Android 181
Fuzzing Broadcast Receivers 183
Identifying a Target 183
Generating Inputs 184
Delivering Inputs 185
Monitoring Testing 185
Fuzzing Chrome for Android 188
Selecting a Technology to Target 188
Generating Inputs 190
Processing Inputs 192
Monitoring Testing 194
Fuzzing the USB Attack Surface 197
USB Fuzzing Challenges 198
Selecting a Target Mode 198
Generating Inputs 199
Processing Inputs 201
Monitoring Testing 202
Summary 204
Chapter 7 Debugging and Analyzing Vulnerabilities 205
Getting All Available Information 205
Choosing a Toolchain 207
Debugging with Crash Dumps 208
System Logs 208
Tombstones 209
Remote Debugging 211
Debugging Dalvik Code 212
Debugging an Example App 213
Showing Framework Source Code 215
Debugging Existing Code 217
Debugging Native Code 221
Debugging with the NDK 222
Debugging with Eclipse 226
Debugging with AOSP 227
Increasing Automation 233
Debugging with Symbols 235
Debugging with a Non-AOSP Device 241
Debugging Mixed Code 243
Alternative Debugging Techniques 243
Debug Statements 243
On-Device Debugging 244
Dynamic Binary Instrumentation 245
Vulnerability Analysis 246
Determining Root Cause 246
Judging Exploitability 260
Summary 261
Chapter 8 Exploiting User Space Software 263
Memory Corruption Basics 263
Stack Buffer Overfl ows 264
Heap Exploitation 268
A History of Public Exploits 275
GingerBreak 275
zergRush 279
mempodroid 283
Exploiting the Android Browser 284
Understanding the Bug 284
Controlling the Heap 287
Summary 290
Chapter 9 Return Oriented Programming 291
History and Motivation 291
Separate Code and Instruction Cache 292
Basics of ROP on ARM 294
ARM Subroutine Calls 295
Combining Gadgets into a Chain 297
Identifying Potential Gadgets 299
Case Study: Android 4.0.1 Linker 300
Pivoting the Stack Pointer 301
Executing Arbitrary Code from a New Mapping 303
Summary 308
Chapter 10 Hacking and Attacking the Kernel 309
Android’s Linux Kernel 309
Extracting Kernels 310
Extracting from Stock Firmware 311
Extracting from Devices 314
Getting the Kernel from a Boot Image 315
Decompressing the Kernel 316
Running Custom Kernel Code 316
Obtaining Source Code 316
Setting Up a Build Environment 320
Confi guring the Kernel 321
Using Custom Kernel Modules 322
Building a Custom Kernel 325
Creating a Boot Image 329
Booting a Custom Kernel 331
Debugging the Kernel 336
Obtaining Kernel Crash Reports 337
Understanding an Oops 338
Live Debugging with KGDB 343
Exploiting the Kernel 348
Typical Android Kernels 348
Extracting Addresses 350
Case Studies 352
Summary 364
Chapter 11 Attacking the Radio Interface Layer 367
Introduction to the RIL 368
RIL Architecture 368
Smartphone Architecture 369
The Android Telephony Stack 370
Telephony Stack Customization 371
The RIL Daemon (rild) 372
The Vendor-RIL API 374
Short Message Service (SMS) 375
Sending and Receiving SMS Messages 376
SMS Message Format 376
Interacting with the Modem 379
Emulating the Modem for Fuzzing 379
Fuzzing SMS on Android 382
Summary 390
Chapter 12 Exploit Mitigations 391
Classifying Mitigations 392
Code Signing 392
Hardening the Heap 394
Protecting Against Integer Overfl ows 394
Preventing Data Execution 396
Address Space Layout Randomization 398
Protecting the Stack 400
Format String Protections 401
Read-Only Relocations 403
Sandboxing 404
Fortifying Source Code 405
Access Control Mechanisms 407
Protecting the Kernel 408
Pointer and Log Restrictions 409
Protecting the Zero Page 410
Read-Only Memory Regions 410
Other Hardening Measures 411
Summary of Exploit Mitigations 414
Disabling Mitigation Features 415
Changing Your Personality 416
Altering Binaries 416
Tweaking the Kernel 417
Overcoming Exploit Mitigations 418
Overcoming Stack Protections 418
Overcoming ASLR 418
Overcoming Data Execution Protections 419
Overcoming Kernel Protections 419
Looking to the Future 420
Official Projects Underway 420
Community Kernel Hardening Efforts 420
A Bit of Speculation 422
Summary 422
Chapter 13 Hardware Attacks 423
Interfacing with Hardware Devices 424
UART Serial Interfaces 424
I2C, SPI, and One-Wire Interfaces 428
JTAG 431
Finding Debug Interfaces 443
Identifying Components 456
Getting Specifi cations 456
Difficulty Identifying Components 457
Intercepting, Monitoring, and Injecting Data 459
USB 459
I2C, SPI, and UART Serial Interfaces 463
Stealing Secrets and Firmware 469
Accessing Firmware Unobtrusively 469
Destructively Accessing the Firmware 471
What Do You Do with a Dump? 474
Pitfalls 479
Custom Interfaces 479
Binary/Proprietary Data 479
Blown Debug Interfaces 480
Chip Passwords 480
Boot Loader Passwords, Hotkeys, and Silent Terminals 480
Customized Boot Sequences 481
Unexposed Address Lines 481
Anti-Reversing Epoxy 482
Image Encryption, Obfuscation, and Anti-Debugging 482
Summary 482
Appendix A Tool Catalog 485
Development Tools 485
Android SDK 485
Android NDK 486
Eclipse 486
ADT Plug-In 486
ADT Bundle 486
Android Studio 487
Firmware Extraction and Flashing Tools 487
Binwalk 487
fastboot 487
Samsung 488
NVIDIA 489
LG 489
HTC 489
Motorola 490
Native Android Tools 491
BusyBox 491
setpropex 491
SQLite 491
strace 492
Hooking and Instrumentation Tools 492
ADBI Framework 492
ldpreloadhook 492
XPosed Framework 492
Cydia Substrate 493
Static Analysis Tools 493
Smali and Baksmali 493
Androguard 493
apktool 494
dex2jar 494
jad 494
JD-GUI 495
JEB 495
Radare2 495
IDA Pro and Hex-Rays Decompiler 496
Application Testing Tools 496
Drozer (Mercury) Framework 496
iSEC Intent Sniffer and Intent Fuzzer 496
Hardware Hacking Tools 496
Segger J-Link 497
JTAGulator 497
OpenOCD 497
Saleae 497
Bus Pirate 497
GoodFET 497
Total Phase Beagle USB 498
Facedancer21 498
Total Phase Beagle I2C 498
Chip Quik 498
Hot air gun 498
Xeltek SuperPro 498
IDA 499
Appendix B Open Source Repositories 501
Google 501
AOSP 501
Gerrit Code Review 502
SoC Manufacturers 502
AllWinner 503
Intel 503
Marvell 503
MediaTek 504
Nvidia 504
Texas Instruments 504
Qualcomm 505
Samsung 505
OEMs 506
ASUS 506
HTC 507
LG 507
Motorola 507
Samsung 508
Sony Mobile 508
Upstream Sources 508
Others 509
Custom Firmware 509
Linaro 510
Replicant 510
Code Indexes 510
Individuals 510
Appendix C References 511
Index 523

亚马逊链接