《Android系统安全和反编译实战》PDF下载

  • 购买积分:19 如何计算积分?
  • 作  者:刘云,朱桂英编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2015
  • ISBN:9787302401285
  • 页数:672 页
图书介绍:本书全程剖析了Android系统安全、应用安全、和加密解密方面的核心知识点,包括Android技术概述、Android技术核心框架分析、获取并编译源码、Android系统的安全机制、内存安全机制、Binder通信安全机制、Android虚拟机基础、Dalvik VM的运作流程、DEX文件、编写安全的应用程序、应用安全策略、文件加密、电话系统的安全机制、短信系统的安全机制、网络防火墙系统、文件加密系统等。

第1篇 基础知识篇 2

第1章 Android系统介绍 2

1.1 纵览智能设备系统 2

1.1.1 昨日皇者——Symbian(塞班) 2

1.1.2 高贵华丽——iOS 2

1.1.3 全新面貌——Windows Phone 3

1.1.4 高端商务——BlackBerry OS(黑莓) 4

1.1.5 本书的主角——Android 5

1.2 分析Android成功的秘诀 6

1.2.1 强有力的业界支持 6

1.2.2 研发阵容强大 6

1.2.3 为开发人员“精心定制” 6

1.2.4 开源 7

1.3 剖析Android系统架构 7

1.3.1 底层操作系统层(OS) 8

1.3.2 各种库(Libraries)和Android运行环境(RunTime) 8

1.3.3 Application Framework(应用程序框架) 9

1.3.4 顶层应用程序(Application) 9

1.4 核心组件 9

1.4.1 Activity界面 9

1.4.2 Intent和Intent Filters 10

1.4.3 Service服务 10

1.4.4 Broadcast Receiver发送广播 11

1.4.5 用Content Provider存储数据 11

1.5 进程和线程 11

1.5.1 什么是进程 12

1.5.2 什么是线程 12

第2章 搭建Android开发环境 13

2.1 准备工作 13

2.2 安装JDK 13

2.3 获取并安装Eclipse和Android SDK 16

2.4 安装ADT 20

2.5 验证设置 21

2.5.1 设定Android SDK Home 22

2.5.2 验证开发环境 22

2.6 Android虚拟设备(AVD) 23

2.6.1 创建AVD 24

2.6.2 启动AVD 26

2.6.3 启动AVD模拟器的基本流程 26

2.7 分析Android应用工程文件 27

2.7.1 src程序目录 28

2.7.2 设置文件AndroidManifest.xml 28

2.7.3 常量定义文件 29

2.7.4 UI布局文件 29

第2篇 系统安全架构篇 32

第3章 Android系统的安全机制 32

3.1 Android安全机制概述 32

3.1.1 Android的安全机制模型 33

3.1.2 Android具有的权限 33

3.1.3 Android的组件模型(Component Model) 34

3.1.4 Android安全访问设置 34

3.2 Linux系统的安全机制 35

3.2.1 root用户、伪用户和普通用户 35

3.2.2 超级用户(权限) 36

3.2.3 文件权限 36

3.2.4 使用su命令临时切换用户身份 38

3.2.5 进程 39

3.3 沙箱模型 41

3.3.1 Java中的沙箱模型 42

3.3.2 Android系统中的沙箱机制 42

3.4 Android应用程序的安全机制 43

3.4.1 AndroidManifest.xml文件的权限机制 43

3.4.2 发布签名机制 43

3.5 分区加载机制 44

第4章 Android通信安全机制 46

4.1 进程和线程安全 46

4.1.1 进程安全 46

4.1.2 线程安全 47

4.1.3 实现线程安全方法 47

4.2 远程过程调用机制(RPC) 48

4.3 Binder安全机制基础 48

4.3.1 Binder中的安全策略 49

4.3.2 Binder机制更加安全 49

4.3.3 Binder安全机制的必要性 50

4.4 Binder机制架构基础 50

4.5 Service Manager管理Binder机制的安全 51

4.5.1 入口函数 52

4.5.2 操作设备文件 53

4.5.3 Binder驱动程序函数 54

4.5.4 红黑树节点结构体 55

4.5.5 管理内存映射地址空间 58

4.5.6 保护进程 61

4.5.7 获得线程信息 64

4.5.8 在循环中等待Client发送请求 66

4.5.9 Service Manager服务保护进程 68

4.6 MediaServer安全通信机制分析 70

4.6.1 MediaServer的入口函数 71

4.6.2 调用ProcessState 71

4.6.3 返回IServiceManager对象 73

4.6.4 注册MediaPlayerService 80

4.6.5 StartThread Pool和joinThreadPool 92

第5章 内存安全和优化 95

5.1 Ashmem系统详解 95

5.1.1 基础数据结构 95

5.1.2 初始化处理 96

5.1.3 打开匿名共享内存设备文件 98

5.1.4 内存映射 100

5.1.5 实现读写操作 101

5.1.6 锁定和解锁机制 103

5.1.7 回收内存块 108

5.2 内存优化机制详解 109

5.2.1 sp和wp简析 109

5.2.2 智能指针基础 111

5.2.3 轻量级指针 112

5.2.4 强指针 115

5.2.5 弱指针 128

5.3 Android内存系统的安全机制分析 132

5.3.1 Ashmem匿名共享内存的原理 132

5.3.2 使用Low Memory Killer机制实现安全和高效 133

5.3.3 Low Memory Killer机制和OOM的对比 133

5.4 常用的垃圾收集算法 134

5.4.1 引用计数算法 134

5.4.2 Mark Sweep算法 134

5.4.3 垃圾回收的时机 136

5.5 Android的内存泄漏 137

5.5.1 什么是内存泄漏 138

5.5.2 为什么会发生内存泄漏 138

5.5.3 shallow size、 retained size 140

5.5.4 查看Android内存泄漏的工具——MAT 140

5.5.5 查看Android内存泄漏的方法 143

5.5.6 Android (Java)中常见的容易引起内存泄漏的不良代码 145

5.5.7 使用MAT根据heap dump分析内存泄漏的根源 146

第6章 文件加密 153

6.1 Dmcrypt加密机制介绍 153

6.1.1 Linux密码管理机制 153

6.1.2 Dmcrypt加密机制分析 158

6.1.3 使用dmcrypt机制构建加密文件系统 166

6.2 Vold机制介绍 168

6.2.1 Vold机制基础 169

6.2.2 Vold的主要功能 173

6.2.3 Vold处理SD/USB的流程 179

6.2.4 Vold的加密机制 205

第7章 电话系统的安全机制 207

7.1 Android电话系统详解 207

7.1.1 电话系统简介 207

7.1.2 电话系统结构 208

7.1.3 驱动程序介绍 210

7.1.4 RIL接口 212

7.1.5 分析电话系统的实现流程 215

7.2 分析Android音频系统 220

7.2.1 音频系统结构 220

7.2.2 分析音频系统的层次 221

7.3 Android电话系统的安全机制 229

7.3.1 防止电话监听 229

7.3.2 VoIP语音编码和安全性分析 233

7.3.3 SIP协议控制 236

7.3.4 在Android平台实现SIP协议栈 239

7.3.5 通话加密技术 241

第8章 短信系统的安全机制 242

8.1 Android短信系统详解 242

8.1.1 短信系统的主界面 242

8.1.2 发送普通短信的过程 245

8.1.3 发送彩信的过程 257

8.1.4 接收短信 267

8.2 短信加密机制的设计模式 273

8.2.1 短信编码设计模式 273

8.2.2 DES短信息加密/解密算法 273

第9章 Android应用组件的安全机制 276

9.1 设置组件的可访问性 276

9.2 Intent组件的安全机制 276

9.2.1 Intent和IntentFilter简介 276

9.2.2 Intent组件的通信安全机制 277

9.2.3 过滤器的安全机制 278

9.3 Activity组件的安全机制 279

9.3.1 Activity劫持漏洞 280

9.3.2 针对Activity的安全建议 280

9.4 Content Provider组件的权限机制 281

9.4.1 Content Provider在应用程序中的架构 281

9.4.2 提供不同的权限机制 283

9.5 Service组件的安全机制 284

9.5.1 启动Service 284

9.5.2 4种操作Service的权限 296

9.6 Broadcast Receiver组件的安全机制 296

9.6.1 Broadcast基础 297

9.6.2 intent描述指示 298

9.6.3 传递广播信息 298

9.6.4 封装传递 299

9.6.5 处理发送请求 300

9.6.6 查找广播接收者 300

9.6.7 处理广播信息 304

9.6.8 检查权限 313

第3篇 安全攻防篇 318

第10章 编写安全的应用程序 318

10.1 开发第一个Android应用程序 318

10.1.1 新建Android工程 318

10.1.2 编写代码和代码分析 319

10.1.3 调试 320

10.1.4 运行项目 321

10.2 声明不同的权限 322

10.2.1 AndroidManifest.xml文件基础 322

10.2.2 声明获取不同的权限 323

10.2.3 自定义一个权限 327

10.3 发布Android程序生成APK 327

10.3.1 什么是APK文件 328

10.3.2 申请会员 329

10.3.3 生成签名文件 331

10.3.4 使用签名文件 336

10.3.5 发布到市场 339

第11章 APK的自我保护机制 340

11.1 分析DEX文件的结构 340

11.1.1 DEX文件的基本结构 340

11.1.2 隐藏DEX中的特定方法 343

11.2 完整性校验 344

11.2.1 DEX完整性校验 345

11.2.2 APK完整性校验 345

11.3 Java反射 346

11.4 动态加载 347

11.5 字符串处理 348

11.6 代码乱序操作 349

11.7 模拟器检测 351

11.8 APK伪加密 353

11.9 调试器检测 354

11.10 代码混淆 355

11.10.1 字符串加密 355

11.10.2 assets加密 356

第12章 常用的反编译工具 357

12.1 反编译基础 357

12.1.1 使用dex2jar和jdgui.exe进行反编译 357

12.1.2 使用Smali指令进行反编译 359

12.2 防止APK文件被反编译 360

12.3 IDA Pro反编译工具详解 361

12.3.1 IDA Pro介绍 361

12.3.2 常用的快捷键 361

12.4 其他常用的反编译工具 362

12.4.1 ApkDec介绍 362

12.4.2 jdgui.exe介绍 363

12.4.3 APKTool详解 364

12.4.4 APK Multi-Tool详解 365

12.5 Android NDK 367

12.5.1 Android NDK介绍 367

12.5.2 使用Android NDK 367

12.6 Smali语法介绍 369

12.6.1 Smali简介 369

12.6.2 Smali语法基础 371

第13章 dex2jar、 jdgui.exe和Apktool工具反编译实战 374

13.1 反编译APK文件 374

13.2 分析反编译后的文件 376

13.2.1 分析主Activity 376

13.2.2 分析类 377

13.2.3 定位程序的核心代码 377

13.3 分析Smali文件 377

13.3.1 一段演示文件 378

13.3.2 分析演示文件 385

13.4 分析内部类 387

13.5 分析监听器 392

13.5.1 Android监听器介绍 392

13.5.2 分析反编译后的监听器 393

13.6 分析注解类 394

13.7 Android独有的自动类 396

第14章 IDA Pro实战——反编译和脱壳 398

14.1 使用IDA Pro工具反编译Android文件 398

14.2 脱壳实战 401

14.2.1 在工作窗口中打开 401

14.2.2 使用IDC静态分析 402

14.2.3 静态脱壳 404

第15章 反编译实战——Smali文件分析 421

15.1 分析循环语句 421

15.1.1 创建Android工程 421

15.1.2 分析Smali文件中的循环语句 422

15.2 分析switch语句 435

15.2.1 创建Android工程 435

15.2.2 分析Smali文件中的switch语句 436

第16章 ARM汇编逆向分析 444

16.1 ARM处理器概述 444

16.1.1 ARM基础 444

16.1.2 ARM处理器的特点 445

16.2 Android和ARM 445

16.2.1 Android支持处理器 445

16.2.2 ARM是Android的首选 446

16.3 ARM的指令系统 446

16.3.1 ARM指令集概述 447

16.3.2 ARM指令的寻址方式 448

16.3.3 ARM指令集 450

16.4 ARM程序设计基础 463

16.4.1 ARM汇编器所支持的伪指令 463

16.4.2 汇编语言的语句格式 472

16.4.3 汇编语言的程序结构 475

16.5 实战演练 479

第17章 加壳技术详解 485

17.1 常用的APK保护技术 485

17.2 什么是加壳 486

17.3 Android加壳的原理 487

17.3.1 解壳数据位于解壳程序文件尾部 487

17.3.2 解壳数据位于解壳程序文件头 499

17.4 第三方工具——APK Protect 500

17.4.1 APK Protect的功能 500

17.4.2 使用APK Protect 500

17.4.3 实战演练——APK Protect加密分析 501

17.5 第三方工具——爱加密 511

第18章 动态分析和调试 513

18.1 常用的动态分析行为 513

18.2 Android中的动态调试 513

18.3 DDMS动态调试 515

18.3.1 DDMS界面介绍 515

18.3.2 从模拟器导出文件 520

18.3.3 使用DDMS获取内存数据 521

18.3.4 Logcat动态调试 523

18.4 MAT动态调试 524

18.5 实战演练——IDA Pro动态调试 527

18.5.1 分析函数JNI OnLoad() 528

18.5.2 分析Java com_ apkprotect Init 532

第19章 常见病毒分析 550

19.1 常见病毒的入侵方式 550

19.2 OBAD木马 551

19.2.1 感染过程分析 551

19.2.2 360分析报告 552

19.2.3 Android的设备管理器漏洞 554

19.2.4 分析OBAD 557

19.3 “隐身大盗二代”木马 561

19.3.1 案例介绍 562

19.3.2 分析木马 562

19.4 广告病毒Android-Trojan/Midown 568

19.4.1 米迪广告平台介绍 568

19.4.2 分析Android-Trojan/Midown 569

第20章 常见漏洞分析 575

20.1 Android漏洞分析报告 575

20.2 fakesms漏洞 577

20.3 签名验证漏洞 579

20.3.1 Master Key漏洞介绍 579

20.3.2 ZIP格式的文件结构 580

20.3.3 分析Master Key漏洞 582

20.3.4 #9695860漏洞 585

20.3.5 LBE手机安全大师对#9695860漏洞的修复 590

第4篇 综合实战篇 596

第21章 网络防火墙系统 596

21.1 系统需求分析 596

21.2 编写布局文件 597

21.3 编写主程序文件 599

21.3.1 主Activity文件 599

21.3.2 帮助Activity文件 610

21.3.3 公共库函数文件 611

21.3.4 系统广播文件 621

21.3.5 登录验证 622

21.3.6 打开/关闭某一个实施控件 623

第22章 跟踪定位系统 627

22.1 背景介绍 627

22.2 系统模块架构 628

22.3 实现系统主界面 629

22.3.1 实现UI布局文件 629

22.3.2 处理登录数据 631

22.4 系统设置界面 632

22.4.1 设置主界面 632

22.4.2 系统设置二级界面 636

22.4.3 添加联系人 643

22.4.4 邮箱设置 646

22.4.5 系统数据操作 647

22.5 动画提示界面 655

22.5.1 实现界面UI布局 655

22.5.2 显示不同的动画提示信息 656

22.6 激活定位跟踪功能 659

22.6.1 实现UI界面布局 659

22.6.2 实现定位跟踪 660

22.6.3 发送求救邮件 666

22.6.4 位置监听 668

22.6.5 发送求救短信 669

22.6.6 发送信息到服务器网站 670