本篇主要提供iOS黑客攻防秘籍陈德电子书的pdf版本下载,本电子书下载方式为百度网盘方式,点击以上按钮下单完成后即会通过邮件和网页的方式发货,有问题请联系邮箱ebook666@outlook.com
商品基本信息,请以下列介绍为准 | |
商品名称: | iOS黑客攻防秘籍(第2版) |
作者: | 陈德 |
定价: | 129.8 |
出版社: | 人民邮电出版社 |
出版日期: | 2021-10-01 |
ISBN: | 9787115568816 |
印次: | 1 |
版次: | 1 |
装帧: | |
开本: | 16开 |
内容简介 | |
本书论述与iOS相关的技术,内容易于理解,可以让读者循序、系统性地学习。全书共16章,覆盖了从iOS8到iOS14的知识点,相比版,这版主要对第2章、第4章、第5章、第9章、2章和5章的内容做了调整,并新增了6章。书中首先详细地介绍了越狱环境的开发与逆向相关工具,然后依次讲解了ARM汇编基础、应用逆向分析、Tweak编写技术、注入与Hook、Mac件格式解析,很后为大家呈现了专享设备ID、刷量与作弊、重要信息获取与取证、应用破解与应用保护、代码人口点劫持、写壳内幕、LLVM编译器代码混淆等多个主题。本书适合信息专业和软件开发专业的髙校学生、中不错iOS开发工程师、逆向工程师、软件研究员阅读。 |
目录 | |
目 录 第 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.yslogd:记录日志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:下载时提取 deb31 第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 拦截 _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 command159 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 与 HTTP 代理检测246 9.3 清除数据247 9.3.1 清除沙盒目录247 9.3.2 清除 Keychain250 9.3.3 清除剪贴板251 9.3.4 清除 AppGroup252 9.3.5 清Tunes 信息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 第 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 抓取 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 第 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 配置自签名证书支持 HTTPS419 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 stitution464 16.3.4 indirectbr469 附录A 书中用到的工具列表477 附录B 机型代号列表479 |
媒体评论 | |
1.本书的主要特点是能够让初学者快速入门并学习到iOS技术的精髓,易学易懂,带领读者直奔主题,内容覆盖iOS 8到iOS 14。 2.本书细致讲解了iOS系统的逆向分析与攻防对抗技术,从越狱环境的开发与逆向的相关工具,由浅入深的延伸到各个主题。 3.本书作者曾创建小型技术论坛供读者交流,并在看雪论坛发表过多篇热帖,该书也受到了看雪论坛iOS版主等多名业内人士力荐。 4.和上一版相比,本书的知识体系更加完整,新增了更多技术难题和解决方案。 |
作者简介 | |
陈德,软件研究员,2007年开始自学技术,师出《黑客防线》,在领域精通多方面技术,个人作品有eXfaker、FileMonitorKit、SystemKit等。 |