本站支持尊重有效期内的版权/著作权,所有的资源均来自于互联网网友分享或网盘资源,一旦发现资源涉及侵权,将立即删除。希望所有用户一同监督并反馈问题,如有侵权请联系站长或发送邮件到ebook666@outlook.com,本站将立马改正
图书基本信息 | |
图书名称 | iOS黑客攻防秘籍 第2版 |
作者 | 陈德 |
定价 | 129.8元 |
出版社 | 人民邮电出版社 |
ISBN | 9787115568816 |
出版日期 | 2021-10-01 |
字数 | |
页码 | |
版次 | |
装帧 | 平装 |
开本 | 128开 |
商品重量 |
内容提要 | |
本书内容易于理解,可以让读者循序渐进、系统性地学习iOS安全技术。全书共16章,知识点覆盖iOS 8到iOS 14。书中首先细致地介绍了越狱环境的开发与逆向相关工具,然后依次讲解了汇编基础、动态调用、静态分析、注入与hook、文件格式,后为大家呈现了应用破解与应用保护、隐私获取与取证、刷量与作弊、设备ID、写壳内幕等多个主题。 |
目录 | |
目 录 第 1章 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 越狱与 Cydia8 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 IDA20 2.6.2 Hopper23 2.7 其他工具24 2.7.1 syslogd:记录日志24 2.7.2 Vi IMproved:编辑器24 2.7.3 apt:下载命令25 2.7.4 Network mands:网络命令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 ARMv733 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 ARM6439 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 Frida93 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 安装 MonkeyDev114 4.6.2 分析应用115 4.6.3 不越狱使用 Frida119 第5章 Tweak 编写技术122 5.1 Theos 开发环境的使用122 5.1.1 编写第 一个 Tweak122 5.1.2 Theos 工程文件126 5.2 逆向分析与编写 Tweak129 5.2.1 逆向分析129 5.2.2 编写 Tweak137 5.3 使用 MonkeyDev 开发 Tweak140 第6章 注入与 Hook144 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 Hook147 6.2.1 Cydia Substrate147 6.2.2 Symbol Table150 6.2.3 Method Swizzing152 第7章 Mach-O 文件格式解析154 7.1 Mach-O 文件格式154 7.1.1 Fat 头部156 7.1.2 Mach 头部158 7.1.3 Load mand159 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 关于 Bitcode198 7.6.1 Bitcode 的作用198 7.6.2 在 Xcode 中如何生成 Bitcode198 7.6.3 通过命令行编译 Bitcode200 7.6.4 将 Bitcode 编译成可执行文件202 7.6.5 编译器相关参数203 第8章 设备 ID205 8.1 UDID 与设备 ID205 8.1.1 编写 mobileconfig205 8.1.2 编写 receive.php206 8.1.3 安装描述文件206 8.1.4 mobileconfig 207 8.2 IDFA208 8.3 IDFV208 8.4 OpenUDID209 8.5 SimulateIDFA210 8.6 MAC 地址211 8.7 ID 的持久化存储214 8.7.1 Keychain 的存储214 8.7.2 剪贴板216 8.8 DeviceToken218 第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 修改 DeviceToken230 9.2.4 修改位置信息232 9.2.5 修改系统启动时间233 9.2.6 修改屏幕亮度、音量、电池电量234 9.2.7 修改磁盘空间与内存235 9.2.8 修改网络 IP 地址、MAC 地址、DNS236 9.2.9 修改上网类型238 9.2.10 修改系统版本与机型240 9.2.11 绕过 VPN 与 代理检测246 9.3 清除数据247 9.3.1 清除沙盒目录247 9.3.2 清除 Keychain250 9.3.3 清除剪贴板251 9.3.4 清除 AppGroup252 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 在两台手机上同时登录同一 9.10 的 62 数据265 第 10章 重要信息获取与取证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 第 11章 应用破解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 抓取 S 数据包323 11.3.4 Charles 修改数据包与重发327 11.3.5 突破 SSL 双向认证330 11.4 文件监控331 11.5 破解登录验证332 11.5.1 得到 传输的数据332 11.5.2 得到解密的数据333 11.5.3 破解方法334 第 12章 应用保护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-llvm341 12.3.4 Theos 集成配置 obfuscator-llvm343 12.3.5 HikariObfuscator343 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 identifier347 12.5.2 检查来源是否为 App Store347 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 第 13章 代码入口点劫持365 13.1 实现原理365 13.2 编写 ShellCode365 13.2.1 编写 ARM 汇编366 13.2.2 计算 main 函数的跳转地址370 13.2.3 终的 ShellCode372 13.3 插入代码373 13.4 修改入口点374 13.4.1 关于指令切换374 13.4.2 ARMv7 入口点375 13.4.3 ARM64 入口点375 13.5 重376 第 14章 写壳内幕378 14.1 判断文件格式类型378 14.2 代码的插入379 14.3 修改程序入口点381 14.4 Shellcode 如何调用函数382 14.5 编写和调试 Shellcode386 14.5.1 ARMv7 Shellcode387 14.5.2 ARM64 Shellcode394 14.6 总结407 第 15章 系统相关409 15.1 Cydia 的相关问题及修复方法409 15.1.1 使用 h3lix 越狱后,Cydia 不能上网409 15.1.2 越狱后抹掉所有内容修复 Cydia409 15.1.3 Cydia 不能上网的解决方法411 15.2 降级传说412 15.2.1 iPhone 5 降级到 8.4.1412 15.2.2 iPhone 5s 降级到 10.3.3413 15.3 访问限制密码的安全隐患416 15.3.1 访问限制密码416 15.3.2 备份密钥数据416 15.3.3 暴力破解密码417 15.4 扫码在线安装应用418 15.4.1 安装 Apache418 15.4.2 配置自证书支持 S419 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 第 16章 LLVM 编译器代码混淆的原理434 16.1 开发和调试 Pass434 16.1.1 编写第 一个 LLVM Pass434 16.1.2 编写 Pass 获取基本块和指令438 16.1.3 将 Pass 编译到 Clang442 16.2 移植代码混淆 Pass444 16.2.1 移植代码444 16.2.2 安装 graphivz445 16.2.3 设置 opt 的启动参数446 16.3 从源码角度解读代码混淆 Pass449 16.3.1 flattening449 16.3.2 boguscf458 16.3.3 substitution464 16.3.4 indirectbr469 附录A 书中用到的工具列表477 附录B 机型代号列表479 |
作者介绍 | |
陈德 软件安全研究员,2007年开始自学安全技术,师出《黑客防线》,在安全领域精通多方面技术,个人作品有eXfaker、FileMonitorKit、SystemKit等, |
编辑推荐 | |
1.本书的主要特点是能够让初学者快速入门并学习到iOS安全技术的精髓,易学易懂,带领读者直奔主题,内容覆盖iOS 8到iOS 14。 2.本书细致讲解了iOS系统的逆向分析与攻防对抗技术,从越狱环境的开发与逆向的相关工具,由浅入深的延伸到各个主题。 3.本书作者曾创建小型技术论坛供读者交流,并在看雪论坛发表过多篇热帖,该书也受到了看雪论坛iOS安全版主等多名业内人士力荐。 4.和上一版相比,本书的知识体系更加完整,新增了更多技术难题和解决方案。 |