新书《Android安全技术揭秘与防范》终于出版了

愿每一个北漂的孩子都能找到自己为之奋斗的方向,不负那些在远方默默支持我们的父母和亲人。

历时将近1的新书《Android安全技术揭秘与防范》终于出版了,第一次写书万分激动,这里向大家推广一下本书。

先附上本书的照片和链接(貌似在线购买还没有出来,稍后更新): 大家可以在::这里看到进度

下面是目录: 第1章 Android简介 10 1.1 发展历史 10 1.2 系统进化史 10 1.2.1 Nexus系列 12 1.2.2 国产定制系统 12 1.2.3 开放与安全 13 1.2.4 移动互联网的趋势 14 1.3 对比IOS系统 15 1.3.1 系统架构对比 15 1.3.2 市场占有量 16 1.3.3 安全对比 16 第2章 Android地下产业链分析 18 2.1 钱从哪里来 18 2.1.1 恶意吸费 19 2.1.2 广告、恶意推广 22 2.1.3 诱骗欺诈 23 2.1.4 隐私窃取 24 2.1.5 安装包分析 24 2.2 催生产业链 26 2.2.1 安全类应用 27 2.2.2 应用加固 27 2.2.3 刷机产业 27 2.2.4 ROM制作与预装 28 2.3 安全的发展趋势 28 2.3.1 系统级别的杀毒 29 2.3.2 应用市场的监管 29 2.3.3 法律体系的完善 29 2.3.4 智能硬件安全 30 第3章 理解Android系统 31 3.1 系统的层级架构 31 3.1.1 应用层 32 3.1.2 框架层 32 3.1.3 核心库与运行环境层 32 3.1.4 Linux内核层 33 3.1.5 系统的分区结构 34 3.2 启动过程 35 3.2.1 BootLoader加载阶段 36 3.2.2 加载Kernel与initrd阶段 36 3.2.3 初始化设备服务阶段 37 3.2.4 加载系统服务阶段 37 3.2.5 虚拟机初始化阶段 37 3.2.6 启动完成阶段 37 3.3 系统关键进程与服务 37 3.3.1 系统第一个进程init详解 38 3.3.2 ADB进程 40 3.3.3 存储类守护进程Vold 40 3.3.4 进程母体Zygote 41 3.3.5 服务管理器ServiceMananger 42 3.3.6 进程复制Android Fork 43 3.3.7 进程间通信Binder机制 43 3.3.8 匿名共享内存机制Ashmem 44 3.3.9 日志服务Logger 45 3.4 APK生成 45 3.4.1 编译过程 47 3.4.2 打包过程 47 3.4.3 签名优化过程 47 3.5 系统安全执行边界 48 3.5.1 沙箱隔离机制 48 3.5.2 权限授予机制 49 3.5.3 数字签名机制 53 3.6 系统的安全结构 56 3.6.1 Android应用程序安全 57 3.6.2 主要的应用组件 57 3.6.3 四大组件模型 59 3.6.4 Android框架层 61 3.6.5 Dalvik 虚拟机 61 3.7 Android 5.0(Lollipop)的安全架构 62 3.7.1 加强型内核SEAndroid 63 3.7.2 安全的锁屏 63 3.7.3 充分的加密 63 3.7.4 Android5.0安全总结 63 第4章 Root你的设备 65 4.1 获取Root权限原理 65 4.1.1 su源码分析 66 4.1.2 Root后手机对比 67 4.1.3 Root思路 68 4.1.4 Root漏洞 68 4.1.5 已经发现的Root漏洞 71 4.1.6 SuperUser分析 71 4.1.7 Root安全 73 4.2 Root的分类 74 4.2.1 临时Root 74 4.2.2 永久Root 77 4.2.3 删除Root 78 4.2.4 免Root 79 4.3 Root之后 80 4.3.1 静默安装 80 4.3.2 删除预装 87 4.3.3 键盘监控 89 4.3.4 短信拦截与静默发送 94 4.3.5 电话监控 97 第5章 APK静态分析 101 5.1 什么是静态分析 101 5.2 常用分析利器 101 5.2.1 资源逆向工具AXMLPrinter 2 101 5.2.2 查看源码工具dex2jar、jd-GUI 102 5.2.3 APK逆向工具APKTool 103 5.2.4 Android逆向助手 104 5.2.5 反汇编工具IDA PRO 104 5.2.6 超级编辑器UltraEdit 105 5.3 认识APK文件 105 5.3.1 App的种类 106 5.3.2 反编译前结构 108 5.3.3 反编译后结构 109 5.4 分析DEX文件 111 5.4.1 认识DEX 112 5.4.2 虚拟机指令Smali简介 113 5.4.3 Smali与Java对比 113 5.4.4 Smali语法基础 115 5.4.5 常用的Smali 注入代码 116 5.5 分析SO文件 118 5.5.1 NDK开发流程 119 5.5.2 开始反汇编 123 5.5.3 尝试修改SO文件逻辑 126 5.6 收集信息定位关键代码 128 5.6.1 AndroidManifest.xml突破 128 5.6.2 特殊关键字突破 130 5.6.3 资源索引突破 131 5.7 开始篡改代码 131 5.7.1 尝试篡改逻辑 132 5.7.2 广告植入与去除 134 5.7.3 收费限制破解 139 5.7.4 应用程序汉化 141 5.7.5 篡改逻辑小结 141 第6章 ARM汇编速成 142 6.1 抽象层次 142 6.1.1 计算机体系结构 142 6.1.2 常见嵌入式处理器 143 6.1.3 Android支持处理器情况 145 6.2 逆向工程 145 6.2.1 计算机层级 146 6.2.2 汇编语言 147 6.2.3 反汇编的理解 150 6.2.4 ARM汇编语言模块的结构 150 6.2.5 简单的ARM程序 150 6.3 ARM体系结构 152 6.3.1 ARM 微处理器的工作状态 152 6.3.2 ARM 体系结构的存储器格式 153 6.3.3 指令长度及数据类型 153 6.3.4 处理器模式 153 6.3.5 ARM状态下寄存器组织 154 6.3.6 Thumb 状态下的寄存器组织 156 6.4 ARM 微处理器的指令集概述 156 6.4.1 ARM指令的助记符 157 6.4.2 程序状态寄存器 158 6.4.3 指令的条件域 160 6.4.4 ARM指令的寻址方式 161 6.5 Thumb 指令及应用 163 6.5.1 Thumb指令集特点 164 6.5.2 ARM与Thumb状态切换 164 6.5.3 Thumb指令集格式 165 6.5.4 Thmub指令的十六进制值计算 166 6.6 快速识别ARM汇编中的C/C++逻辑 167 6.6.1 识别if-else判断逻辑 167 6.6.2 识别while-do循环逻辑 169 6.6.3 识别for循环逻辑 171 6.6.4 识别switch-case分支逻辑 172 第7章 APK动态分析 176 7.1 应用体系架构 176 7.1.1 代码安全分析 177 7.1.2 组件安全分析 177 7.1.3 存储安全分析 177 7.1.4 通讯安全分析 177 7.2 DDMS调试 178 7.2.1 使用Log进行逻辑跟踪 178 7.2.2 不安全的本地存储 181 7.2.3 使用TraceView进行方法跟踪 182 7.3 网络抓包 186 7.3.1 抓包工具Fiddler简介 187 7.3.2 抓包的原理 187 7.3.3 如何在Android上进行抓包 188 7.3.4 设置断点修改请求 191 7.4 使用AndBug断点调试 194 7.4.1 配置AndBug环境 194 7.4.2 AndBug常用命令 195 7.4.3 AndBug调试步骤 196 7.4.4 开始断点调试 197 7.5 使用IDA Pro进行动态调试 202 7.5.1 使用IDA动态调试原生库so 202 7.5.2 使用IDA动态调试dex 207 7.6 调试WebView APP 209 7.6.1 Chrome插件调试 210 7.6.2 WebView已知漏洞 210 7.6.3 HTML安全 211 7.6.4 网络钓鱼 212 7.6.5 SQL注入攻击 212 第8章 动态注入技术 214 8.1 什么Hook是技术 214 8.1.1 Hook原理 215 8.1.2 Hook的种类 218 8.1.3 Hook的危害 220 8.2 常用的Hook工具 220 8.2.1 Xposed框架 220 8.2.2 CydiaSubstrate框架 222 8.2.3 ADBI/DDI框架 224 8.3 Hook Android应用 224 8.3.1 尝试Hook系统API 226 8.3.2 Hook指定应用注入广告 228 8.3.3 App登陆劫持 232 8.4 Hook 原生应用程序 238 8.4.1 CydiaSubstrate框架针对Native层Hook的支持 238 8.4.2 通过JNI改变系统颜色 240 8.4.3 Hook后替换指定应用中的原生方法 244 8.4.4 使用Hook进行广告拦截 248 8.5 Hook检测/修复 250 8.5.1 Hook检测 250 8.5.2 Hook修复 253 8.5.3 Hook检测小结 255 第9章 应用加固与渗透测试 256 9.1 防止利用系统组件漏洞 256 9.1.1 Activity编码安全 257 9.1.2 Brocast Recevier编码安全 266 9.1.3 Service编码安全 274 9.1.4 Provider编码安全 283 9.2 防止逆向 296 9.2.1 代码混淆 297 9.2.2 DEX保护 302 9.2.3 SO文件保护 305 9.2.4 防止jd-GUI查看代码 305 9.2.5 防止二次打包 307 9.3 防止动态分析 313 9.3.1 检测运行环境 314 9.3.2 防止进行动态注入 315 9.4 Android渗透测试 316 9.4.1 渗透测试步骤 316 9.4.2 渗透测试工具 317 9.4.3 应用程序渗透测试 323 第10章 系统安全措施 325 10.1 启动验证 325 10.2 磁盘加密 326 10.2.1 加密模式 327 10.2.2 密钥的生成 327 10.3 屏幕安全 327 10.3.1 图案锁 329 10.3.2 密码锁 330 10.3.3 PIN锁 330 10.4 USB调试安全 330 10.4.1 ADB概况 331 10.4.2 为什么ADB需要安全 332 10.4.3 ADB安全 332 10.4.4 ADB的安全措施 333 10.4.5 ADB认证秘钥 334 10.5 增强型内核SELinux/SEAndroid 334 10.5.1 SELinux架构 335 10.5.2 传统的Linux的不足之处 336 10.5.3 SELinux的特点 336 10.5.4 SELinux的运行模式 337 10.5.5 SELinux 的启动、关闭与观察 339 第11章 内核攻击与防护 343 11.1 Rootkit是什么 343 11.1.1 Rootkit概述 344 11.1.2 Linux可加载的内核模块 347 11.1.3 剖析内核模块 348 11.1.4 了解内核模块对象 348 11.1.5 LKM 的生命周期 349 11.1.6 系统调用机制 350 11.1.7 SWI中断 350 11.1.8 Linux系统调用规范 351 11.1.9 系统接口重定向 352 11.1.10 虚拟文件系统 353 11.2 Android电话系统 354 11.2.1 Android 电话子系统体系结构 355 11.2.2 Android 电话子系统工作流程 356 11.2.3 内核级 Rootkit 攻击位置 358 11.3 开始攻击内核 359 11.3.1 环境搭建 359 11.3.2 第一个自定义内核程序 362 11.3.3 隐藏潜伏模块 365 11.3.4 操纵内核模块 372 11.3.5 信息收集模块 373 11.4 内核级Rootkit检测 374 11.4.1 常用的 Rootkit 检测方法 374 11.4.2 Android Rootkit检测系统模型 374 11.4.3 LKM 模块检测 377 11.4.4 电话子系统攻击检测 378 11.5 Rootkit的植入与启动 380 11.5.1 Rootkit的植入 380 11.5.2 Rootkit的启动 380 11.5.3 Rootkit小结 381 附录1 ARM 指令集 382 12.1 跳转指令 382 12.1.1 B 指令 382 12.1.2 BL 指令 382 12.1.3 BLX 指令 383 12.1.4 BX 指令 383 12.2 数据处理指令 383 12.2.1 MOV 指令 384 12.2.2 MVN 指令 384 12.2.3 CMP 指令 385 12.2.4 CMN 指令 385 12.2.5 TST 指令 385 12.2.6 TEQ 指令 386 12.2.7 ADD 指令 386 12.2.8 ADC 指令 386 12.2.9 SUB 指令 387 12.2.10 SBC 指令 387 12.2.11 RSB 指令 388 12.2.12 RSC 指令 388 12.2.13 AND 指令 388 12.2.14 ORR 指令 389 12.2.15 EOR 指令 389 12.2.16 BIC 指令 389 12.3 乘法指令与乘加指令 390 12.3.1 MUL 指令 390 12.3.2 MLA 指令 390 12.3.3 SMULL 指令 391 12.3.4 SMLAL 指令 391 12.3.5 UMULL 指令 391 12.3.6 UMLAL 指令 392 12.4 程序状态寄存器访问指令 392 12.4.1 MRS 指令 392 12.4.2 MSR 指令 393 12.5 加载/存储指令 393 12.5.1 LDR 指令 394 12.5.2 LDRB 指令 394 12.5.3 LDRH 指令 395 12.5.4 STR 指令 395 12.5.5 STRB 指令 395 12.5.6 STRH 指令 396 12.6 批量数据加载/存储指令 396 12.6.1 LDM(或 STM)指令 396 12.7 数据交换指令 397 12.7.1 SWP 指令 397 12.7.2 SWPB 指令 397 12.8 移位指令(操作) 398 12.8.1 LSL(或 ASL)操作 398 12.8.2 LSR 操作 399 12.8.3 ASR 操作 399 12.8.4 ROR 操作 399 12.8.5 RRX 操作 399 12.9 协处理器指令 400 12.9.1 CDP 指令 400 12.9.2 LDC 指令 400 12.9.3 STC 指令 401 12.9.4 MCR 指令 401 12.9.5 MRC 指令 402 12.10 异常产生指令 402 12.10.1 SWI 指令 402 12.10.2 BKPT 指令 402 附录2 ARM伪指令集 404 12.11 符号定义伪指令 404 12.11.1 GBLA、GBLL 和 GBLS指令 404 12.11.2 LCLA、LCLL 和 LCLS指令 405 12.11.3 SETA、SETL 和 SETS指令 405 12.11.4 RLIST指令 405 12.12 数据定义伪指令 406 12.12.1 DCB指令 406 12.12.2 DCW、DCWU指令 406 12.12.3 DCD、DCDU指令 407 12.12.4 DCFD、DCFDU指令 407 12.12.5 DCFS、DCFSU指令 407 12.12.6 DCQ、DCQU指令 408 12.12.7 SPACE指令 408 12.12.8 MAP指令 408 12.12.9 FILED指令 408 12.13 汇编控制伪指令 409 12.13.1 IF、ELSE、ENDIF指令 409 12.13.2 WHILE、WEND指令 410 12.13.3 MACRO、MEND指令 410 12.13.4 MEXIT指令 411 12.14 其他常用的伪指令 411 12.14.1 AREA指令 411 12.14.2 ALIGN指令 412 12.14.3 CODE16、CODE32指令 412 12.14.4 END指令 413 12.14.5 EQU指令 413 12.14.6 EXPORT、GLOBAL指令 414 12.14.7 IMPORT指令 414 12.14.8 EXTERN指令 415 12.14.9 GET、INCLUDE指令 415 12.14.10 INCBIN指令 415 12.14.11 RN指令 416 12.14.12 ROUT指令 416

为什么写一本Android安全方向的书?无论何时何地,只要创造就有收获,只有不息的奋进,才能证明生命的存在。

新书《Android安全技术揭秘与防范》终于出版了

相关文章:

你感兴趣的文章:

标签云: