展开全部

主编推荐语

分析Android安全问题,指导开发安全APP。

内容简介

本书从分析Android系统的运行原理、框架和主要模块入手现,着重分析了Android系统存在的安全技术问题,以及这些技术在移动设备上产生的安全问题,让读者了解如何静态分析Android软件、如何动态调试Android软件、如何开发出安全的APP、如何使自己的系统不会被盗版等。这本书几乎每一个部分,都结合实际例子,一步步讲解,可以使读者了解APP安全的问题,给开发者一些防范技术。

目录

  • 版权信息
  • 作者简介
  • 内容提要
  • 前言
  • 本书的结构
  • 本书面向的读者
  • 第1章Android简介
  • 1.1 Android的发展历史
  • 1.2 Android系统进化史
  • 1.2.1 Nexus系列
  • 1.2.2 国产定制系统
  • 1.2.2.1 国产ROM
  • 1.2.2.2 手机桌面
  • 1.2.3 Android的开放与安全
  • 1.2.4 移动互联网的趋势
  • 1.3 Android和iOS系统对比
  • 1.3.1 系统架构对比
  • 1.3.2 Android和iOS安全对比
  • 1.3.2.1 Android系统安全性分析
  • 1.3.2.2 iOS系统安全性分析
  • 第2章 Android地下产业链分析
  • 2.1 钱从哪里来
  • 2.1.1 恶意吸费
  • 2.1.2 广告、恶意推广
  • 2.1.3 诱骗欺诈
  • 2.1.4 隐私窃取
  • 2.1.5 安装包分析
  • 2.2 安全的发展趋势
  • 2.2.1 系统级别的杀毒
  • 2.2.2 应用市场的监管
  • 2.2.3 智能硬件安全
  • 第3章 理解Android系统
  • 3.1 Android系统的层级架构
  • 3.1.1 应用层
  • 3.1.2 框架层
  • 3.1.3 核心库与运行环境层
  • 3.1.4 Linux内核层
  • 3.1.5 Android系统的分区结构
  • 3.2 启动过程
  • 3.2.1 Boot Loader加载阶段
  • 3.2.2 加载Kernel与initrd阶段
  • 3.2.3 初始化设备服务阶段
  • 3.2.4 加载系统服务阶段
  • 3.2.5 虚拟机初始化阶段
  • 3.2.6 启动完成阶段
  • 3.3 系统关键进程与服务
  • 3.3.1 系统第一个进程init详解
  • 3.3.1.1 初始化脚本init.rc
  • 3.3.1.2 属性服务
  • 3.3.2 ADB进程
  • 3.3.3 存储类守护进程Vold
  • 3.3.4 进程母体Zygote
  • 3.3.5 服务管理器ServiceMananger
  • 3.3.6 进程复制Android Fork
  • 3.3.7 进程间通信Binder机制
  • 3.3.8 匿名共享内存机制Ashmem
  • 3.3.9 日志服务Logger
  • 3.4 APK生成
  • 3.4.1 编译过程
  • 3.4.2 打包过程
  • 3.4.3 签名优化过程
  • 3.5 系统安全执行边界
  • 3.5.1 沙箱隔离机制
  • 3.5.2 权限授予机制
  • 3.5.2.1 API权限
  • 3.5.2.2 文件权限
  • 3.5.2.3 IPC权限
  • 3.5.3 数字签名机制
  • 3.5.3.1 数字签名的优点
  • 3.5.3.2 如何签名
  • 3.5.3.3 怎样验证签名
  • 3.5.3.4 APK签名比对的应用场景
  • 3.6 系统的安全结构
  • 3.6.1 Android应用程序安全
  • 3.6.2 主要的应用组件
  • 3.6.2.1 Android项目清单文件AndroidManifest.xml
  • 3.6.2.2 Intents
  • 3.6.3 四大组件模型
  • 3.6.3.1 Activity
  • 3.6.3.2 Service
  • 3.6.3.3 Content Provider
  • 3.6.3.4 Broadcast Receiver
  • 3.6.4 Android框架层
  • 3.6.5 Dalvik虚拟机
  • 3.7 Android 5.0(Lollipop)的安全架构
  • 3.7.1 加强型内核SEAndroid
  • 3.7.2 安全的锁屏
  • 3.7.3 充分的加密
  • 3.7.4 Android5.0安全总结
  • 第4章 Root你的设备
  • 4.1 获取Root权限原理
  • 4.1.1 su源码分析
  • 4.1.2 Root后手机对比
  • 4.1.3 Root思路
  • 4.1.4 Root漏洞
  • RageAgainstTheCage漏洞
  • 4.1.5 已经发现的Root漏洞
  • 4.1.6 SuperUser分析
  • 4.1.7 Root安全
  • 4.2 Root的分类
  • 4.2.1 临时Root
  • 4.2.2 永久Root
  • 4.2.3 删除Root
  • 4.2.4 免Root
  • 4.3 Root之后
  • 4.3.1 静默安装
  • 4.3.1.1 调用PackageInstaller中隐藏的API
  • 4.3.1.2 使用pm命令安装
  • 4.3.2 删除预装
  • 4.3.3 键盘监控
  • 4.3.4 短信拦截与静默发送
  • 4.3.5 电话监控
  • 第5章 APK静态分析
  • 5.1 什么是静态分析
  • 5.2 常用分析利器
  • 5.2.1 资源逆向工具AXMLPrinter 2
  • 5.2.2 查看源码工具dex2jar、jd-GUI
  • 5.2.3 APK逆向工具APKTool
  • 5.2.4 Android逆向助手
  • 5.2.5 反汇编工具IDA PRO
  • 5.2.6 超级编辑器UltraEdit
  • 5.3 认识APK文件
  • 5.3.1 App的种类
  • 5.3.1.1 原生App
  • 5.3.1.2 网页App(Web App)
  • 5.3.1.3 混合App(Hybrid App)
  • 5.3.2 反编译前结构
  • 5.3.3 反编译后结构
  • 5.4 分析DEX文件
  • 5.4.1 认识DEX
  • DEX文件结构
  • 5.4.2 虚拟机指令Smali简介
  • 5.4.3 Smali与Java对比
  • 5.4.4 Smali语法基础
  • 5.4.5 常用的Smali 注入代码
  • 5.4.5.1 增加调试Log 信息
  • 5.4.5.2 弹出AlertDialog消息框
  • 5.5 分析SO文件
  • 5.5.1 NDK开发流程
  • 5.5.2 开始反汇编
  • 5.5.2.1 什么是反汇编
  • 5.5.2.2 开始反汇编
  • 5.5.3 尝试修改SO文件逻辑
  • 5.6 收集信息定位关键代码
  • 5.6.1 AndroidManifest.xml突破
  • 5.6.1.1 Applicatioin类
  • 5.6.1.2 MainActivity类
  • 5.6.1.3 特殊的Permission
  • 5.6.2 特殊关键字突破
  • 5.6.3 资源索引突破
  • 5.7 开始篡改代码
  • 5.7.1 尝试篡改逻辑
  • 5.7.2 广告植入与去除
  • 5.7.3 收费限制破解
  • 5.7.4 应用程序汉化
  • 5.7.5 篡改逻辑小结
  • 第6章 ARM汇编速成
  • 6.1 抽象层次
  • 6.1.1 计算机体系结构
  • 6.1.2 常见嵌入式处理器
  • 6.1.2.1 嵌入式微处理器 MPU
  • 6.1.2.2 嵌入式微控制器MCU
  • 6.1.2.3 嵌入式DSP处理器
  • 6.1.2.4 片上系统SOC
  • 6.1.3 ndroid支持处理器情况
  • 6.2 逆向工程
  • 6.2.1 计算机层级
  • 6.2.2 汇编语言
  • 6.2.2.1 GCC编译过程
  • 6.2.3 反汇编的理解
  • 6.2.4 RM汇编语言模块的结构
  • 6.2.5 简单的ARM程序
  • 6.3 ARM体系结构
  • 6.3.1 RM微处理器的工作状态
  • 6.3.2 RM体系结构的存储器格式
  • 6.3.3 指令长度及数据类型
  • 6.3.4 处理器模式
  • 6.3.5 RM状态下寄存器组织
  • 6.3.5.1 未分组寄存器R0~R7
  • 6.3.5.2 分组寄存器R8~R14
  • 6.3.5.3 程序计数器PC(R15)
  • 6.3.5.4 寄存器R16
  • 6.3.6 Thumb状态下的寄存器组织
  • 6.4 ARM微处理器的指令集概述
  • 6.4.1. RM指令的助记符
  • 6.4.2 程序状态寄存器
  • 6.4.2.1 条件码标志
  • 6.4.2.2 控制位
  • 6.4.2.3 保留位
  • 6.4.3 指令的条件域
  • 6.4.4 RM指令的寻址方式
  • 6.4.4.1 立即寻址
  • 6.4.4.2 寄存器寻址
  • 6.4.4.3 寄存器间接寻址
  • 6.4.4.4 基址变址寻址
  • 6.4.4.5 多寄存器寻址
  • 6.4.4.6 相对寻址
  • 6.4.4.7 堆栈寻址
  • 6.5 Thumb指令及应用
  • 6.5.1 Thumb指令集特点
  • 6.5.2 RM与Thumb状态切换
  • 6.5.3 Thumb指令集格式
  • 6.5.4 Thmub指令的十六进制值计算
  • 6.6 快速识别ARM汇编中的C/C++逻辑
  • 6.6.1 识别if-else判断逻辑
  • 6.6.2 识别while-do循环逻辑
  • 6.6.3 识别for循环逻辑
  • 6.6.4 识别switch-case分支逻辑
  • 第7章 APK动态分析
  • 7.1 应用体系架构
  • 7.1.1 代码安全分析
  • 7.1.2 组件安全分析
  • 7.1.3 存储安全分析
  • 7.1.4 通信安全分析
  • 7.2 DDMS调试
  • 7.2.1 使用Log进行逻辑跟踪
  • 7.2.2 不安全的本地存储
  • 7.2.3 使用TraceView进行方法跟踪
  • 7.3 网络抓包
  • 7.3.1 抓包工具Fiddler简介
  • 7.3.2 抓包的原理
  • 7.3.3 如何在Android上进行抓包
  • 7.3.4 设置断点修改请求
  • 7.3.4.1 修改Request
  • 7.3.4.2 AutoResponder修改Response
  • 7.4 使用AndBug断点调试
  • 7.4.1 配置AndBug环境
  • 7.4.2 AndBug常用命令
  • 7.4.3 AndBug调试步骤
  • 7.4.4 开始断点调试
  • 7.4.4.1 确定需要调试的类与方法
  • 7.4.4.2 查找定位方法
  • 7.4.4.3 设置断点
  • 7.4.4.4 断点分析查看变量值
  • 7.5 使用IDA Pro进行动态调试
  • 7.5.1 使用IDA动态调试原生库so
  • 7.5.1.1 在Android设备上运行android_schmerver程序
  • 7.5.1.2 使用adb forward命令进行端口转发
  • 7.5.1.3 使用IDA Pro附上目标应用程序
  • 7.5.1.4 计算查找对应的函数起始地址
  • 7.5.2 使用IDA动态调试dex
  • 7.6 调试WebViewApp
  • 7.6.1 Chrome插件调试
  • 7.6.2 WebView已知漏洞
  • 7.6.3 HTML安全
  • 7.6.4 网络钓鱼
  • 7.6.5 SQL注入攻击
  • 第8章动态注入技术
  • 8.1 什么是Hook技术
  • 8.1.1 Hook原理
  • 8.1.1.1 Hook工作流程
  • 8.1.1.2 ptrace函数
  • 8.1.2 Hook的种类
  • 8.1.2.1 Java层API Hook
  • 8.1.2.2 Native层So库Hook
  • 8.1.2.3 全局Hook
  • 8.1.3 Hook的危害
  • 8.2 常用的Hook工具
  • 8.2.1 Xposed框架
  • 8.2.2 CydiaSubstrate框架
  • 8.2.3 ADBI/DDI框架
  • 8.3 HookAndroid应用
  • 8.3.1 尝试Hook系统API
  • 8.3.2 Hook指定应用注入广告
  • 8.3.3 App登录劫持
  • 8.4 Hook原生应用程序
  • 8.4.1 CydiaSubstrate框架针对Native层Hook的支持
  • 8.4.2 通过JNI改变系统颜色
  • 8.4.3 Hook后替换指定应用中的原生方法
  • 8.4.4 使用Hook进行广告拦截
  • 8.5 Hook检测/修复
  • 8.5.1 Hook检测
  • 8.5.2 Hook修复
  • 8.5.3 Hook检测小结
  • 第9章 应用加固与渗透测试
  • 9.1 防止利用系统组件漏洞
  • 9.1.1 Activity编码安全
  • 9.1.1.1 私有Activity
  • 9.1.1.2 公共Activity
  • 9.1.1.3 伙伴Activity
  • 9.1.1.4 内部Activity
  • 9.1.2 Brocast Recevier编码安全
  • 9.1.2.1 私有Brocast Receiver
  • 9.1.2.2 公共Brocast Receiver
  • 9.1.2.3 内部Brocast Receiver
  • 9.1.3 Service编码安全
  • 9.1.3.1 私有Service
  • 9.1.3.2 公共Service
  • 9.1.3.3 合作Service
  • 9.1.3.4 内部Service
  • 9.1.4 Provider编码安全
  • 9.1.4.1 私有Content Provider
  • 9.1.4.2 公共Content Provider
  • 9.1.4.3 合作Content Provider
  • 9.1.4.4 内部Content Provider
  • 9.1.4.5 部分 Content Provider
  • 9.2 防止逆向
  • 9.2.1 代码混淆
  • 9.2.1.1 ProGuard简介
  • 9.2.1.2 使用ProGuard
  • 9.2.1.3 混淆带来的问题
  • 9.2.2 DEX保护
  • 9.2.2.1 DEX优化与混淆处理
  • 9.2.2.2 什么是加壳
  • 9.2.3 SO文件保护
  • 9.2.4 防止jd-GUI查看代码
  • 9.2.5 防止二次打包
  • 9.2.5.1 如何防止二次打包
  • 9.2.5.2 常用的验证策略
  • 9.3 防止动态分析
  • 9.3.1 检测运行环境
  • 9.3.2 防止进行动态注入
  • 9.4 Android渗透测试
  • 9.4.1 渗透测试步骤
  • 9.4.2 渗透测试工具
  • 9.4.2.1 安全评估框架drozer
  • 9.4.2.2 瑞士军刀Busybox
  • 9.4.2.3 集成化工具
  • 9.4.3 应用程序渗透测试
  • 第10章 系统安全措施
  • 10.1 启动验证
  • 10.2 磁盘加密
  • 10.2.1 加密模式
  • 10.2.2 密钥的生成
  • 10.3 屏幕安全
  • 10.3.1 图形同虚设的屏幕锁
  • 10.3.2 密码锁
  • 10.3.3 PIN锁
  • 10.4 USB调试安全
  • 10.4.1 ADB概况
  • 10.4.2 为什么ADB需要安全
  • 10.4.3 ADB安全
  • 10.4.4 ADB的安全措施
  • 10.4.5 ADB认证秘钥
  • 10.5 增强型内核SELinux/SEAndroid
  • 10.5.1 SELinux架构
  • 10.5.2 传统的Linux的不足之处
  • 10.5.3 SELinux的特点
  • 10.5.4 SELinux的运行模式
  • 10.5.5 SELinux的启动、关闭与观察
  • 第11章 内核攻击与防护
  • 11.1 Rootkit是什么
  • 11.1.1 Rootkit概述
  • 11.1.1.1 进程调度
  • 11.1.1.2 内存管理
  • 11.1.1.3 虚拟文件系统(VFS)
  • 11.1.1.4 网络
  • 11.1.1.5 进程间通信(IPC)
  • 11.1.2 Linux可加载的内核模块
  • 11.1.3 剖析内核模块
  • 11.1.4 了解内核模块对象
  • 11.1.5 LKM的生命周期
  • 11.1.6 系统调用机制
  • 11.1.7 SWI中断
  • 11.1.8 Linux系统调用规范
  • 11.1.9 系统接口重定向
  • 11.1.10 虚拟文件系统
  • 11.2 Android电话系统
  • 11.2.1 Android电话子系统体系结构
  • 11.2.2 Android电话子系统工作流程
  • 11.2.3 内核级Rootkit攻击位置
  • 11.3 开始攻击内核
  • 11.3.1 环境搭建
  • 11.3.2 第一个自定义内核程序
  • 11.3.3 隐藏潜伏模块
  • 11.3.3.1 屏蔽lsmode
  • 11.3.3.2 文件系统隐藏
  • 11.3.3.3 网络连接的隐藏
  • 11.3.4 操纵内核模块
  • 11.3.4.1 AT 命令简介
  • 11.3.4.2 AT 命令攻击
  • 11.3.5 信息收集模块
  • 11.4 内核级Rootkit检测
  • 11.4.1 常用的 Rootkit 检测方法
  • 11.4.2 Android Rootkit检测系统模型
  • 11.4.3 LKM模块检测
  • 11.4.4 电话子系统攻击检测
  • 11.5 Rootkit的植入与启动
  • 11.5.1 Rootkit的植入
  • 11.5.2 Rootkit的启动
  • 11.5.3 Rootkit小结
  • 附录A ARM指令集
  • A.1 跳转指令
  • A.1.1 B指令
  • A.1.2 BL指令
  • A.1.3 BLX指令
  • A.1.4 BX指令
  • A.2 数据处理指令
  • A.2.1 MOV指令
  • A.2.2 MVN指令
  • A.2.3 CMP指令
  • A.2.4 CMN指令
  • A.2.5 TST指令
  • A.2.6 TEQ 指令
  • A.2.7 ADD 指令
  • A.2.8 ADC 指令
  • A.2.9 SUB指令
  • A.2.10 SBC 指令
  • A.2.11 RSB指令
  • A.2.12 RSC指令
  • A.2.13 AND指令
  • A.2.14 ORR指令
  • A.2.15 EOR指令
  • A.2.16 BIC指令
  • A.3 乘法指令与乘加指令
  • A.3.1 MUL指令
  • A.3.2 MLA指令
  • A.3.3 SMULL 指令
  • A.3.4 SMLAL 指令
  • A.3.5 UMULL指令
  • A.3.6 UMLAL 指令
  • A.4 程序状态寄存器访问指令
  • A.4.1 MRS指令
  • A.4.2 MSR指令
  • A.5 加载/存储指令
  • A.5.1 LDR 指令
  • A.5.2 LDRB 指令
  • A.5.3 LDRH 指令
  • A.5.4 STR 指令
  • A.5.5 STRB 指令
  • A.5.6 STRH 指令
  • A.6 批量数据加载/存储指令
  • LDM(或 STM)指令
  • A.7 数据交换指令
  • A.7.1 SWP指令
  • A.7.2 SWPB指令
  • A.8 移位指令(操作)
  • A.8.1 LSL(或ASL)操作
  • A.8.2 LSR操作
  • A.8.3 ASR操作
  • A.8.4 ROR 操作
  • A.8.5 RRX 操作
  • A.9 协处理器指令
  • A.9.1 CDP 指令
  • A.9.2 LDC指令
  • A.9.3 STC指令
  • A.9.4 MCR指令
  • A.9.5 MRC指令
  • A.10 异常产生指令
  • A.10.1 SWI指令
  • A.10.2 BKPT 指令
  • 附录B ARM伪指令集
  • B.1 符号定义伪指令
  • B.1.1 GBLA、GBLL和GBLS指令
  • B.1.2 LCLA、LCLL和LCLS指令
  • B.1.3 SETA、SETL和SETS指令
  • B.1.4 RLIST指令
  • B.2 数据定义伪指令
  • B.2.1 DCB指令
  • B.2.2 DCW、DCWU指令
  • B.2.3 DCD、DCDU指令
  • B.2.4 DCFD、DCFDU指令
  • B.2.5 DCFS、DCFSU指令
  • B.2.6 DCQ、DCQU指令
  • B.2.7 SPACE指令
  • B.2.8 MAP指令
  • B.2.9 FILED指令
  • B.3 汇编控制伪指令
  • B.3.1 IF、ELSE、ENDIF指令
  • B.3.2 WHILE、WEND指令
  • B.3.3 MACRO、MEND指令
  • B.3.4 MEXIT指令
  • B.4 其他常用的伪指令
  • B.4.1 AREA指令
  • B.4.2 ALIGN指令
  • B.4.3 CODE16、CODE32指令
  • B.4.4 END指令
  • B.4.5 EQU指令
  • B.4.6 EXPORT、GLOBAL指令
  • B.4.7 IMPORT指令
  • B.4.8 EXTERN指令
  • B.4.9 GET、INCLUDE指令
  • B.4.10 INCBIN指令
  • B.4.11 RN指令
  • B.4.12 ROUT指令
  • 看完了
展开全部

评分及书评

评分不足
1个评分

出版方

人民邮电出版社

人民邮电出版社是工业和信息化部主管的大型专业出版社,成立于1953年10月1日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。