当前位置:首页 > 工业技术
Android安全技术揭秘与防范
Android安全技术揭秘与防范

Android安全技术揭秘与防范PDF电子书下载

工业技术

  • 电子书积分:12 积分如何计算积分?
  • 作 者:周圣韬著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2015
  • ISBN:9787115401663
  • 页数:339 页
图书介绍:本书从分析Android系统的运行原理、框架和主要模块入手现,着重分析了Android系统存在的安全技术问题,以及这些技术在移动设备上产生的安全问题,让读者了解如何静态分析Android软件、如何动态调试Android软件、如何开发出安全的APP、如何使自己的系统不会被盗版等。这本书几乎每一个部分,都结合实际例子,一步步讲解,可以使读者了解APP安全的问题,给开发者一些防范技术。
《Android安全技术揭秘与防范》目录

第1章 Android简介 1

1.1 Android的发展历史 1

1.2 Android系统进化史 1

1.2.1 Nexus系列 3

1.2.2国产定制系统 3

1.2.3 Android的开放与安全 4

1.2.4移动互联网的趋势 4

1.3 Android和iOS系统对比 5

1.3.1系统架构对比 6

1.3.2 Android和iOS安全对比 6

第2章 Android地下产业链分析 8

2.1钱从哪里来 8

2.1.1恶意吸费 9

2.1.2广告、恶意推广 9

2.1.3诱骗欺诈 10

2.1.4隐私窃取 10

2.1.5安装包分析 10

2.2安全的发展趋势 11

2.2.1系统级别的杀毒 11

2.2.2应用市场的监管 11

2.2.3智能硬件安全 12

第3章 理解Android系统 13

3.1 Android系统的层级架构 13

3.1.1应用层 14

3.1.2框架层 14

3.1.3核心库与运行环境层 14

3.1.4 Linux内核层 15

3.1.5 Android系统的分区结构 15

3.2启动过程 16

3.2.1 Boot Loader加载阶段 17

3.2.2加载Kernel与initrd阶段 17

3.2.3初始化设备服务阶段 17

3.2.4加载系统服务阶段 18

3.2.5虚拟机初始化阶段 18

3.2.6启动完成阶段 18

3.3系统关键进程与服务 18

3.3.1系统第一个进程init详解 18

3.3.2 ADB进程 19

3.3.3存储类守护进程Vold 20

3.3.4进程母体Zygote 21

3.3.5服务管理器ServiceMananger 21

3.3.6进程复制Android Fork 22

3.3.7进程间通信Binder机制 22

3.3.8匿名共享内存机制Ashmem 24

3.3.9日志服务Logger 24

3.4 APK生成 25

3.4.1编译过程 26

3.4.2打包过程 26

3.4.3签名优化过程 26

3.5系统安全执行边界 26

3.5.1沙箱隔离机制 27

3.5.2权限授予机制 28

3.5.3数字签名机制 31

3.6系统的安全结构 34

3.6.1 Android应用程序安全 34

3.6.2主要的应用组件 34

3.6.3四大组件模型 36

3.6.4 Android框架层 37

3.6.5 Dalvik虚拟机 38

3.7 Android 5.0(Lollipop)的安全架构 38

3.7.1加强型内核SEAndroid 39

3.7.2安全的锁屏 39

3.7.3充分的加密 40

3.7.4 Android5.0安全总结 40

第4章 Root你的设备 41

4.1获取 Root权限原理 41

4.1.1 su源码分析 42

4.1.2 Root后手机对比 43

4.1.3 Root思路 43

4.1.4 Root漏洞 44

4.1.5已经发现的Root漏洞 46

4.1.6 SuperUser分析 46

4.1.7 Root安全 48

4.2 Root的分类 48

4.2.1临时Root 48

4.2.2永久Root 50

4.2.3删除Root 52

4.2.4免Root 52

4.3 Root之后 52

4.3.1静默安装 53

4.3.2删除预装 58

4.3.3键盘监控 60

4.3.4短信拦截与静默发送 64

4.3.5电话监控 66

第5章 APK静态分析 69

5.1什么是静态分析 69

5.2常用分析利器 69

5.2.1资源逆向工具AXMLPrinter 2 70

5.2.2查看源码工具dex2jar、jd-GUI 70

5.2.3 APK逆向工具APKTool 71

5.2.4 Android逆向助手 71

5.2.5反汇编工具IDA PRO 72

5.2.6超级编辑器UltraEdit 73

5.3认识APK文件 73

5.3.1 App的种类 73

5.3.2反编译前结构 75

5.3.3反编译后结构 76

5.4分析DEX文件 78

5.4.1认识DEX 79

5.4.2虚拟机指令Smali简介 79

5.4.3 Smali与Java对比 79

5.4.4 Smali语法基础 81

5.4.5常用的Smali注入代码 82

5.5分析SO文件 83

5.5.1 NDK开发流程 84

5.5.2开始反汇编 87

5.5.3尝试修改SO文件逻辑 90

5.6收集信息定位关键代码 92

5.6.1 AndroidManifest.xml突破 92

5.6.2特殊关键字突破 94

5.6.3资源索引突破 94

5.7开始篡改代码 95

5.7.1尝试篡改逻辑 96

5.7.2广告植入与去除 97

5.7.3收费限制破解 101

5.7.4应用程序汉化 102

5.7.5篡改逻辑小结 103

第6章 ARM汇编速成 104

6.1抽象层次 104

6.1.1计算机体系结构 104

6.1.2常见嵌入式处理器 105

6.1.3 Android支持处理器情况 106

6.2逆向工程 107

6.2.1计算机层级 107

6.2.2汇编语言 108

6.2.3反汇编的理解 111

6.2.4 ARM汇编语言模块的结构 111

6.2.5简单的ARM程序 111

6.3 ARM体系结构 113

6.3.1 ARM微处理器的工作状态 113

6.3.2 ARM体系结构的存储器格式 113

6.3.3指令长度及数据类型 114

6.3.4处理器模式 114

6.3.5 ARM状态下寄存器组织 114

6.3.6 Thumb状态下的寄存器组织 116

6.4 ARM微处理器的指令集概述 117

6.4.1 ARM指令的助记符 118

6.4.2程序状态寄存器 118

6.4.3指令的条件域 120

6.4.4 ARM指令的寻址方式 121

6.5 Thumb指令及应用 123

6.5.1 Thumb指令集特点 124

6.5.2 ARM与Thumb状态切换 124

6.5.3 Thumb指令集格式 125

6.5.4 Thmub指令的十六进制值计算 126

6.6快速识别ARM汇编中的C/C++逻辑 127

6.6.1识别if-else判断逻辑 127

6.6.2识别while-do循环逻辑 129

6.6.3识别for循环逻辑 130

6.6.4识别switch-case分支逻辑 132

第7章 APK动态分析 135

7.1应用体系架构 135

7.1.1代码安全分析 135

7.1.2组件安全分析 136

7.1.3存储安全分析 136

7.1.4通信安全分析 136

7.2 DDMS调试 137

7.2.1使用Log进行逻辑跟踪 138

7.2.2不安全的本地存储 140

7.2.3使用TraceView进行方法跟踪 141

7.3网络抓包 145

7.3.1抓包工具Fiddler简介 145

7.3.2抓包的原理 145

7.3.3如何在Android上进行抓包 146

7.3.4设置断点修改请求 148

7.4使用AndBug断点调试 150

7.4.1配置AndBug环境 150

7.4.2 AndBug常用命令 152

7.4.3 AndBug调试步骤 152

7.4.4开始断点调试 153

7.5使用IDA Pro进行动态调试 158

7.5.1使用IDA动态调试原生库so 158

7.5.2使用IDA动态调试dex 162

7.6调试WebViewApp 164

7.6.1 Chrome插件调试 164

7.6.2 WebView已知漏洞 165

7.6.3 HTML安全 166

7.6.4网络钓鱼 166

7.6.5 SQL注入攻击 167

第8章 动态注入技术 169

8.1什么是Hook技术 169

8.1.1 Hook原理 170

8.1.2 Hook的种类 173

8.1.3 Hook的危害 174

8.2常用的Hook工具 174

8.2.1 Xposed框架 174

8.2.2 CydiaSubstrate框架 176

8.2.3 ADBI/DDI框架 177

8.3 HookAndroid应用 178

8.3.1尝试Hook系统API 179

8.3.2 Hook指定应用注入广告 181

8.3.3 App登录劫持 184

8.4 Hook原生应用程序 188

8.4.1 CydiaSubstrate框架针对Native层Hook的支持 188

8.4.2通过JNI改变系统颜色 190

8.4.3 Hook后替换指定应用中的原生方法 193

8.4.4使用Hook进行广告拦截 196

8.5 Hook检测/修复 198

8.5.1 Hook检测 198

8.5.2 Hook修复 201

8.5.3 Hook检测小结 203

第9章 应用加固与渗透测试 204

9.1防止利用系统组件漏洞 204

9.1.1 Activity编码安全 205

9.1.2 Brocast Recevier编码安全 212

9.1.3 Service编码安全 218

9.1.4 Provider编码安全 226

9.2防止逆向 236

9.2.1代码混淆 236

9.2.2 DEX保护 241

9.2.3 SO文件保护 243

9.2.4防止jd-GUI查看代码 244

9.2.5防止二次打包 245

9.3防止动态分析 250

9.3.1检测运行环境 251

9.3.2防止进行动态注入 252

9.4 Android渗透测试 252

9.4.1渗透测试步骤 253

9.4.2渗透测试工具 253

9.4.3应用程序渗透测试 258

第10章 系统安全措施 260

10.1启动验证 260

10.2磁盘加密 261

10.2.1加密模式 262

10.2.2密钥的生成 262

10.3屏幕安全 262

10.3.1图形同虚设的屏幕锁 264

10.3.2密码锁 265

10.3.3 PIN锁 265

10.4 USB调试安全 265

10.4.1 ADB概况 266

10.4.2为什么ADB需要安全 267

10.4.3 ADB安全 267

10.4.4 ADB的安全措施 268

10.4.5 ADB认证秘钥 268

10.5增强型内核SELinux/SEAndroid 269

10.5.1 SELinux架构 269

10.5.2传统的Linux的不足之处 270

10.5.3 SELinux的特点 271

10.5.4 SELinux的运行模式 272

10.5.5 SELinux的启动、关闭与观察 273

第11章 内核攻击与防护 277

11.1 Rootkit是什么 277

11.1.1 Rootkit概述 278

11.1.2 Linux可加载的内核模块 280

11.1.3剖析内核模块 281

11.1.4了解内核模块对象 282

11.1.5 LKM的生命周期 282

11.1.6系统调用机制 283

11.1.7 SWI中断 283

11.1.8 Linux系统调用规范 284

11.1.9系统接口重定向 284

11.1.10虚拟文件系统 285

11.2 Android电话系统 287

11.2.1 Android电话子系统体系结构 287

11.2.2 Android电话子系统工作流程 288

11.2.3内核级Rootkit攻击位置 290

11.3开始攻击内核 290

11.3.1环境搭建 290

11.3.2第一个自定义内核程序 293

11.3.3隐藏潜伏模块 296

11.3.4操纵内核模块 301

11.3.5信息收集模块 303

11.4内核级Rootkit检测 303

11.4.1常用的Rootkit检测方法 303

11.4.2 Android Rootkit检测系统模型 304

11.4.3 LKM模块检测 305

11.4.4电话子系统攻击检测 307

11.5 Rootkit的植入与启动 308

11.5.1 Rootkit的植入 308

11.5.2 Rootkit的启动 308

11.5.3 Rootkit小结 308

附录A ARM指令集 309

A.1跳转指令 309

A.1.1 B指令 309

A.1.2 BL指令 310

A.1.3 BLX指令 310

A.1.4 BX指令 310

A.2数据处理指令 310

A.2.1 MOV指令 311

A.2.2 MVN指令 311

A.2.3 CMP指令 311

A.2.4 CMN指令 312

A.2.5 TST指令 312

A.2.6 TEQ指令 312

A.2.7 ADD指令 313

A.2.8 ADC指令 313

A.2.9 SUB指令 313

A.2.10 SBC指令 314

A.2.11 RSB指令 314

A.2.12 RSC指令 314

A.2.13 AND指令 315

A.2.14 ORR指令 315

A.2.15 FOR指令 315

A.2.16 BIC指令 315

A.3乘法指令与乘加指令 316

A.3.1 MUL指令 316

A.3.2 MLA指令 316

A.3.3 SMULL指令 317

A.3.4 SMLAL指令 317

A.3.5 UMULL指令 317

A.3.6 UMLAL指令 318

A.4程序状态寄存器访问指令 318

A.4.1 MRS指令 318

A.4.2 MSR指令 318

A.5加载/存储指令 319

A.5.1 LDR指令 319

A.5.2 LDRB指令 320

A.5.3 LDRH指令 320

A.5.4 STR指令 320

A.5.5 STRB指令 321

A.5.6 STRH指令 321

A.6批量数据加载/存储指令 321

A.7数据交换指令 322

A.7.1 SWP指令 322

A.7.2 SWPB指令 323

A.8移位指令(操作) 323

A.8.1 LSL(或ASL)操作 323

A.8.2 LSR操作 324

A.8.3 ASR操作 324

A.8.4 ROR操作 324

A.8.5 RRX操作 324

A.9协处理器指令 325

A.9.1 CDP指令 325

A.9.2 LDC指令 325

A.9.3 STC指令 326

A.9.4 MCR指令 326

A.9.5 MRC指令 326

A.10异常产生指令 326

A.10.1 SWI指令 327

A.10.2 BKPT指令 327

附录B ARM伪指令集 328

B.1符号定义伪指令 328

B.1.1 GBLA、GBLL和GBLS指令 328

B.1.2 LCLA、LCLL和LCLS指令 329

B.1.3 SETA、SETL和SETS指令 329

B.1.4 RLIST指令 329

B.2数据定义伪指令 330

B.2.1 DCB指令 330

B.2.2 DCW、DCWU指令 330

B.2.3 DCD、DCDU指令 331

B.2.4 DCFD、DCFDU指令 331

B.2.5 DCFS、DCFSU指令 331

B.2.6 DCQ、DCQU指令 332

B.2.7 SPACE指令 332

B.2.8 MAP指令 332

B.2.9 FILED指令 332

B.3汇编控制伪指令 333

B.3.1 IF、ELSE、ENDIF指令 333

B.3.2 WHILE、WEND指令 333

B.3.3 MACRO、MEND指令 334

B.3.4 MEXIT指令 334

B.4其他常用的伪指令 335

B.4.1 AREA指令 335

B.4.2 ALIGN指令 336

B.4.3 CODE16、CODE32指令 336

B.4.4 END指令 337

B.4.5 EQU指令 337

B.4.6 EXPORT、GLOBAL指令 337

B.4.7 IMPORT指令 338

B.4.8 EXTERN指令 338

B.4.9 GET、INCLUDE指令 338

B.4.10 INCBIN指令 339

B.4.11 RN指令 339

B.4.12 ROUT指令 339

相关图书
作者其它书籍
返回顶部