1.本书的主要特点是能够让初学者快速入门并学习到iOS安全技术的精髓,易学易懂,带领读者直奔主题,内容覆盖iOS 8到iOS 14。
2.本书细致讲解了iOS系统的逆向分析与攻防对抗技术,从越狱环境的开发与逆向的相关工具,由浅入深的延伸到各个主题。
3.本书作者曾创建小型技术论坛供读者交流,并在看雪论坛发表过多篇热帖,该书也受到了看雪论坛iOS安全版主等多名业内人士力荐。
4.和上一版相比,本书的知识体系更加完整,新增了更多技术难题和解决方案。
网站首页 软件下载 游戏下载 翻译软件 电子书下载 电影下载 电视剧下载 教程攻略
书名 | iOS黑客攻防秘籍 第2版 |
分类 | 计算机-操作系统 |
作者 | 陈德 |
出版社 | 人民邮电出版社 |
下载 | ![]() |
简介 | 编辑推荐 1.本书的主要特点是能够让初学者快速入门并学习到iOS安全技术的精髓,易学易懂,带领读者直奔主题,内容覆盖iOS 8到iOS 14。 2.本书细致讲解了iOS系统的逆向分析与攻防对抗技术,从越狱环境的开发与逆向的相关工具,由浅入深的延伸到各个主题。 3.本书作者曾创建小型技术论坛供读者交流,并在看雪论坛发表过多篇热帖,该书也受到了看雪论坛iOS安全版主等多名业内人士力荐。 4.和上一版相比,本书的知识体系更加完整,新增了更多技术难题和解决方案。 内容推荐 本书论述与iOS安全相关的技术,内容易于理解,可以让读者循序渐进、系统性地学习。全书共16章,覆盖了从iOS8到iOS14的知识点,相比版,这版主要对第2章、第4章、第5章、第9章、2章和5章的内容做了调整,并新增了6章。书中首先详细地介绍了越狱环境的开发与逆向相关工具,然后依次讲解了ARM汇编基础、应用逆向分析、Tweak编写技术、注入与Hook、Mach-O文件格式解析,很后为大家呈现了专享设备ID、刷量与作弊、重要信息获取与取证、应用破解与应用保护、代码人口点劫持、写壳内幕、LLVM编译器代码混淆等多个主题。本书适合信息安全专业和软件开发专业的髙校学生、中不错iOS开发工程师、逆向工程师、软件安全研究员阅读。 目录 章 iOS安全机制 1 1.1 iOS 应用的安装源 1 1.2 沙盒 2 1.3 代码签名 3 1.4 用户权限隔离 4 1.5 数据执行保护 4 1.6 地址空间布局随机化 5 1.7 后台程序 6 第2章 越狱环境开发工具的准备 8 2.1 越狱与 Cydia 8 2.2 文件管理工具 11 2.2.1 iFile:在手机上管理文件 11 2.2.2 AFC2:通过 USB 管理手机文件 12 2.3 命令行工具 12 2.3.1 MTerminal:在手机上执行命令行 12 2.3.2 OpenSSH:在计算机上执行命令行 13 2.4 代码注入测试工具 15 2.5 远程调试工具 16 2.5.1 debugserver 的配置与启动 16 2.5.2 LLDB 连接 debugserver 及其调试 17 2.5.3 通过 USB 连接 SSH 进行调试 19 2.6 反汇编工具 20 2.6.1 IDA 20 2.6.2 Hopper 23 2.7 其他工具 24 2.7.1 syslogd:记录日志 24 2.7.2 Vi IMproved:编辑器 24 2.7.3 apt:下载命令 25 2.7.4 Network commands:网络命令 25 2.7.5 dumpdecrypted:脱壳 25 2.7.6 class-dump:导出头文件 27 2.7.7 lsof:查看进程所占用的文件 29 2.7.8 AppSync:安装未签名的应用 31 2.7.9 App Admin:下载指定版本的应用 31 2.7.10 Cydown:下载时提取 deb 包 31 第3章 ARM 汇编基础 33 3.1 ARMv7 33 3.1.1 编写 32 位汇编代码 33 3.1.2 寄存器与栈 35 3.1.3 基础指令 35 3.1.4 条件跳转与循环 36 3.1.5 函数参数的调用过程 37 3.1.6 Thumb 指令 38 3.2 ARM64 39 3.2.1 编写 64 位的汇编代码 39 3.2.2 寄存器与栈 39 3.2.3 函数参数的调用过程 40 3.3 在 Xcode 中使用内联汇编 41 3.3.1 C、C++、Objective-C 调用汇编函数 42 3.3.2 直接编写内联汇编 42 第4章 应用逆向分析 44 4.1 寻找程序入口——main 函数 44 4.1.1 编写一个测试程序 44 4.1.2 ARMv7 的 main 函数 45 4.1.3 ARM64 的 main 函数 46 4.2 动态调试 47 4.2.1 反汇编 47 4.2.2 添加断点 48 4.2.3 打印数据 53 4.2.4 读写数据 54 4.2.5 修改程序的执行流程 56 4.2.6 查看信息 58 4.2.7 执行到上层调用栈 61 4.2.8 临时修改变量的值 62 4.2.9 使用帮助与搜索 63 4.2.10 LLDB 脚本 63 4.2.11 不越狱使用 Xcode 调试第三方应用 68 4.2.12 IDA 动态调试 71 4.3 静态分析 75 4.3.1 通过字符串定位代码的引用位置 75 4.3.2 查看函数被调用的位置 79 4.3.3 重设基地址 81 4.3.4 修改代码并保存文件 81 4.3.5 使用 IDA Python 脚本 82 4.4 逆向分析实例 83 4.5 Frida 93 4.5.1 Frida 的安装与相关工具 93 4.5.2 frida-trace 实例 97 4.5.3 拦截器的使用 99 4.5.4 拦截 sub_xxxx 这种函数 103 4.5.5 API 查找器和拦截器的组合使用 106 4.5.6 远程过程调用 110 4.6 使用 MonkeyDev 逆向应用 114 4.6.1 安装 MonkeyDev 114 4.6.2 分析应用 115 4.6.3 不越狱使用 Frida 119 第5章 Tweak 编写技术 122 5.1 Theos 开发环境的使用 122 5.1.1 编写个 Tweak 122 5.1.2 Theos 工程文件 126 5.2 逆向分析与编写 Tweak 129 5.2.1 逆向分析 129 5.2.2 编写 Tweak 137 5.3 使用 MonkeyDev 开发 Tweak 140 第6章 注入与 Hook 144 6.1 注入动态库 144 6.1.1 编写动态库 144 6.1.2 DynamicLibraries 目录 145 6.1.3 DYLD_INSERT_LIBRARIES 环境变量 145 6.1.4 不越狱注入动态库 146 6.2 Hook 147 6.2.1 Cydia Substrate 147 6.2.2 Symbol Table 150 6.2.3 Method Swizzing 152 第7章 Mach-O 文件格式解析 154 7.1 Mach-O 文件格式 154 7.1.1 Fat 头部 156 7.1.2 Mach 头部 158 7.1.3 Load command 159 7.1.4 符号表与字符串表 172 7.2 CFString 的运行过程 174 7.2.1 编写测试代码 174 7.2.2 CFString 的数据结构 175 7.2.3 调试运行过程 176 7.3 Mach-O ARM 函数绑定的调用过程分析 177 7.3.1 编写测试代码 177 7.3.2 分析 ARMv7 函数绑定的调用过程 178 7.3.3 分析 ARM64 函数绑定的调用过程 186 7.3.4 总结 190 7.4 静态库文件格式 192 7.5 class-dump 导出头文件的原理 194 7.6 关于 Bitcode 198 7.6.1 Bitcode 的作用 198 7.6.2 在 Xcode 中如何生成 Bitcode 198 7.6.3 通过命令行编译 Bitcode 200 7.6.4 将 Bitcode 编译成可执行文件 202 7.6.5 编译器相关参数 203 第8章 唯一设备 ID 205 8.1 UDID 与设备 ID 205 8.1.1 编写 mobileconfig 205 8.1.2 编写 receive.php 206 8.1.3 安装描述文件 206 8.1.4 mobileconfig 签名 207 8.2 IDFA 208 8.3 IDFV 208 8.4 OpenUDID 209 8.5 SimulateIDFA 210 8.6 MAC 地址 211 8.7 ID 的持久化存储 214 8.7.1 Keychain 的存储 214 8.7.2 剪贴板 216 8.8 DeviceToken 218 第9章 刷量与作弊 219 9.1 越狱环境下获取 root 权限 219 9.1.1 iOS 8 - iOS 10 获取 root 权限 220 9.1.2 iOS 11- iOS 14 获取 root 权限 220 9.2 修改手机信息 221 9.2.1 修改基本信息 221 9.2.2 修改 Wi-Fi 信息与运营商 228 9.2.3 修改 DeviceToken 230 9.2.4 修改位置信息 232 9.2.5 修改系统启动时间 233 9.2.6 修改屏幕亮度、音量、电池电量 234 9.2.7 修改磁盘空间与内存 235 9.2.8 修改网络 IP 地址、MAC 地址、DNS 236 9.2.9 修改上网类型 238 9.2.10 修改系统版本与机型 240 9.2.11 绕过 VPN 与 HTTP 代理检测 246 9.3 清除数据 247 9.3.1 清除沙盒目录 247 9.3.2 清除 Keychain 250 9.3.3 清除剪贴板 251 9.3.4 清除 AppGroup 252 9.3.5 清除 iTunes 信息 255 9.4 发布应用 256 9.4.1 将 App 打包成 deb 格式 256 9.4.2 制作 Cydia 源发布应用 257 9.5 权限的切换 258 9.6 变化 IP 地址 259 9.7 反越狱检测 261 9.8 不用越狱修改任意位置信息 263 9.9 在两台手机上同时登录同一微信 264 9.10 微信的 62 数据 265 0章 重要信息获取与取证 267 10.1 通讯录 267 10.2 短信 268 10.3 通话记录 269 10.4 位置信息 269 10.5 网络信息 271 10.5.1 上网类型 272 10.5.2 热点信息 273 10.5.3 DNS 信息 274 10.5.4 IP 地址 275 10.5.5 代理信息 277 10.6 传感器信息 278 10.6.1 加速计 279 10.6.2 陀螺仪 280 10.6.3 磁力计 281 10.6.4 气压计 282 10.7 系统信息 283 10.8 硬件 ID 信息 286 10.9 已安装的应用列表 289 10.10 使用 idb 分析泄露的数据 291 10.10.1 安装和运行 291 10.10.2 使用方法 293 10.11 重要的文件与目录 296 10.11.1 照片 297 10.11.2 Safari 浏览器书签 297 10.11.3 Wi-Fi 历史连接记录 297 10.11.4 应用快照 298 10.11.5 录音 298 10.12 libimobiledevice 获取手机信息 299 1章 应用破解 301 11.1 重打包应用与多开 301 11.1.1 重打包应用 301 11.1.2 多开 308 11.2 应用重签名 310 11.2.1 代码签名 311 11.2.2 授权机制 314 11.2.3 配置文件 315 11.2.4 重签名 317 11.3 抓包和改包 318 11.3.1 tcpdump 抓包 318 11.3.2 Wireshark 抓包 321 11.3.3 Charles 抓取 HTTPS 数据包 323 11.3.4 Charles 修改数据包与重发 327 11.3.5 突破 SSL 双向认证 330 11.4 文件监控 331 11.5 破解登录验证 332 11.5.1 得到 HTTP 传输的数据 332 11.5.2 得到解密的数据 333 11.5.3 破解方法 334 2章 应用保护 335 12.1 函数名混淆 335 12.2 字符串加密 335 12.3 代码混淆 338 12.3.1 inline 内联函数 338 12.3.2 obfuscator-llvm 编译器 339 12.3.3 Xcode 集成配置 obfuscator-llvm 341 12.3.4 Theos 集成配置 obfuscator-llvm 343 12.3.5 HikariObfuscator 343 12.4 越狱检测 344 12.4.1 判断相关文件是否存在 344 12.4.2 直接读取相关文件 345 12.4.3 使用 stat 函数判断文件 345 12.4.4 检查动态库列表 346 12.4.5 检查环境变量 346 12.4.6 检查函数是否被劫持 346 12.5 反盗版 347 12.5.1 检查 Bundle identifier 347 12.5.2 检查来源是否为 App Store 347 12.5.3 检查重签名 350 12.5.4 代码校验 351 12.6 反调试与反反调试 353 12.6.1 反调试方法 353 12.6.2 反反调试 355 12.7 反注入与反反注入 359 12.8 防止被抓包 361 3章 代码入口点劫持 365 13.1 实现原理 365 13.2 编写 ShellCode 365 13.2.1 编写 ARM 汇编 366 13.2.2 计算 main 函数的跳转地址 370 13.2.3 最终的 ShellCode 372 13.3 插入代码 373 13.4 修改入口点 374 13.4.1 关于指令切换 374 13.4.2 ARMv7 入口点 375 13.4.3 ARM64 入口点 375 13.5 重签名 376 4章 写壳内幕 378 14.1 判断文件格式类型 378 14.2 代码的插入 379 14.3 修改程序入口点 381 14.4 Shellcode 如何调用函数 382 14.5 编写和调试 Shellcode 386 14.5.1 ARMv7 Shellcode 387 14.5.2 ARM64 Shellcode 394 14.6 总结 407 5章 系统相关 409 15.1 Cydia 的相关问题及修复方法 409 15.1.1 使用 h3lix 越狱后,Cydia 不能上网 409 15.1.2 越狱后抹掉所有内容修复 Cydia 409 15.1.3 Cydia 不能上网的终极解决方法 411 15.2 降级传说 412 15.2.1 iPhone 5 降级到 8.4.1 412 15.2.2 iPhone 5s 降级到 10.3.3 413 15.3 访问限制密码的安全隐患 416 15.3.1 访问限制密码 416 15.3.2 备份密钥数据 416 15.3.3 暴力破解密码 417 15.4 扫码在线安装应用 418 15.4.1 安装 Apache 418 15.4.2 配置自签名证书支持 HTTPS 419 15.4.3 下载安装应用 422 15.4.4 购买认证的 SSL 证书 424 15.5 CVE-2018-4407 远程溢出漏洞 425 15.6 解决磁盘空间不足的问题 426 15.7 解决 h3lix 重签名后越狱失败 427 15.8 解决 iOS 12 启动进程提示 Killed:9 的问题 429 15.9 iPhone 安装 Android 系统 431 6章 LLVM 编译器代码混淆的原理 434 16.1 开发和调试 Pass 434 16.1.1 编写个 LLVM Pass 434 16.1.2 编写 Pass 获取基本块和指令 438 16.1.3 将 Pass 编译到 Clang 442 16.2 移植代码混淆 Pass 444 16.2.1 移植代码 444 16.2.2 安装 graphivz 445 16.2.3 设置 opt 的启动参数 446 16.3 从源码角度解读代码混淆 Pass 449 16.3.1 flattening 449 16.3.2 boguscf 458 16.3.3 substitution 464 16.3.4 indirectbr 469 附录A 书中用到的工具列表 477 附录B 机型代号列表 479 |
随便看 |
|
霍普软件下载网电子书栏目提供海量电子书在线免费阅读及下载。