书籍详情
Android安全技术揭秘与防范
作者:周圣韬
出版社:人民邮电出版社
出版时间:2015-09-01
ISBN:9787115401663
定价:¥69.00
购买这本书可以去
内容简介
《Android安全技术揭秘与防范》从分析Android系统的运行原理、框架和主要模块入手,着重分析了Android系统存在的安全技术问题,以及这些技术在移动设备上产生的安全问题,帮助读者了解如何静态分析Android软件,如何动态调试Android软件,如何开发出安全的App,如何使自己的系统不被盗版,以及Android漏洞、逆向工程和反汇编等核心技术。《Android安全技术揭秘与防范》几乎每一个部分,都结合实际例子,一步步讲解,可以使读者了解App安全的问题,给开发者一些防范技术,是一本特别实用的Android安全指南。移动设备开发者、安全研究人员、Android应用程序开发者和负责评估Android安全性的技术人员都可以在本书中找到必要的指导。
作者简介
周圣韬,曾任职于金山、360公司做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
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
猜您喜欢