展开全部

主编推荐语

本书细致讲解了iOS系统的逆向分析与攻防对抗技术,从越狱环境的开发与逆向的相关工具,由浅入深的延伸到各个主题。

内容简介

全书共16章,知识点覆盖iOS8到iOS14。书中首先细致地介绍了越狱环境的开发与逆向相关工具,然后依次讲解了汇编基础、动态调用、静态分析、注入与hook、文件格式,后为大家呈现了应用破解与应用保护、隐私获取与取证、刷量与作弊、设备ID、写壳内幕等多个主题。

本书作者曾创建小型技术论坛供读者交流,并在看雪论坛发表过多篇热帖,该书也受到了看雪论坛iOS安全版主等多名业内人士力荐。

目录

  • 版权信息
  • 前言
  • 第1章 iOS安全机制
  • 1.1 iOS 应用的安装源
  • 1.2 沙盒
  • 1.3 代码签名
  • 1.4 用户权限隔离
  • 1.5 数据执行保护
  • 1.6 地址空间布局随机化
  • 1.7 后台程序
  • 第2章 越狱环境开发工具的准备
  • 2.1 越狱与 Cydia
  • 2.2 文件管理工具
  • 2.2.1 iFile:在手机上管理文件
  • 2.2.2 AFC2:通过 USB 管理手机文件
  • 2.3 命令行工具
  • 2.3.1 MTerminal:在手机上执行命令行
  • 2.3.2 OpenSSH:在计算机上执行命令行
  • 2.4 代码注入测试工具
  • 2.5 远程调试工具
  • 2.5.1 debugschmerver 的配置与启动
  • 2.5.2 LLDB 连接 debugschmerver 及其调试
  • 2.5.3 通过 USB 连接 SSH 进行调试
  • 2.6 反汇编工具
  • 2.6.1 IDA
  • 2.6.2 Hopper
  • 2.7 其他工具
  • 2.7.1 syslogd:记录日志
  • 2.7.2 Vi IMproved:编辑器
  • 2.7.3 apt:下载命令
  • 2.7.4 Network commands:网络命令
  • 2.7.5 dumpdecrypted:脱壳
  • 2.7.6 class-dump:导出头文件
  • 2.7.7 lsof:查看进程所占用的文件
  • 2.7.8 AppSync:安装未签名的应用
  • 2.7.9 App Admin:下载指定版本的应用
  • 2.7.10 Cydown:下载时提取 deb 包
  • 第3章 ARM汇编基础
  • 3.1 ARMv7
  • 3.1.1 编写 32 位汇编代码
  • 3.1.2 寄存器与栈
  • 3.1.3 基础指令
  • 3.1.4 条件跳转与循环
  • 3.1.5 函数参数的调用过程
  • 3.1.6 Thumb 指令
  • 3.2 ARM64
  • 3.2.1 编写 64 位的汇编代码
  • 3.2.2 寄存器与栈
  • 3.2.3 函数参数的调用过程
  • 3.3 在 Xcode 中使用内联汇编
  • 3.3.1 C、C++、Objective-C 调用汇编函数
  • 3.3.2 直接编写内联汇编
  • 第4章 应用逆向分析
  • 4.1 寻找程序入口——main 函数
  • 4.1.1 编写一个测试程序
  • 4.1.2 ARMv7 的 main 函数
  • 4.1.3 ARM64 的 main 函数
  • 4.2 动态调试
  • 4.2.1 反汇编
  • 4.2.2 添加断点
  • 4.2.3 打印数据
  • 4.2.4 读写数据
  • 4.2.5 修改程序的执行流程
  • 4.2.6 查看信息
  • 4.2.7 执行到上层调用栈
  • 4.2.8 临时修改变量的值
  • 4.2.9 使用帮助与搜索
  • 4.2.10 LLDB 脚本
  • 4.2.11 不越狱使用 Xcode 调试第三方应用
  • 4.2.12 IDA 动态调试
  • 4.3 静态分析
  • 4.3.1 通过字符串定位代码的引用位置
  • 4.3.2 查看函数被调用的位置
  • 4.3.3 重设基址
  • 4.3.4 修改代码并保存文件
  • 4.3.5 使用 IDA Python 脚本
  • 4.4 逆向分析实例
  • 4.5 Frida
  • 4.5.1 Frida 的安装与相关工具
  • 4.5.2 frida-trace 实例
  • 4.5.3 拦截器的使用
  • 4.5.4 拦截 sub_xxxx 这种函数
  • 4.5.5 API 查找器和拦截器的组合使用
  • 4.5.6 远程过程调用
  • 4.6 使用 MonkeyDev 逆向应用
  • 4.6.1 frida-ios-dump 一键脱壳
  • 4.6.2 安装 MonkeyDev
  • 4.6.3 分析应用
  • 4.6.4 不越狱使用 Frida
  • 第5章 Tweak编写技术
  • 5.1 Theos 开发环境的使用
  • 5.1.1 编写第一个 Tweak
  • 5.1.2 Theos 工程文件
  • 5.2 逆向分析与编写 Tweak
  • 5.2.1 逆向分析
  • 5.2.2 编写 Tweak
  • 5.3 使用 MonkeyDev 开发 Tweak
  • 第6章 注入与Hook
  • 6.1 注入动态库
  • 6.1.1 编写动态库
  • 6.1.2 DynamicLibraries 目录
  • 6.1.3 DYLD_INSERT_LIBRARIES 环境变量
  • 6.1.4 不越狱注入动态库
  • 6.2 Hook
  • 6.2.1 Cydia Substrate
  • 6.2.2 Symbol Table
  • 6.2.3 Method Swizzing
  • 第7章 Mach-O文件格式解析
  • 7.1 Mach-O 文件格式
  • 7.1.1 Fat 头部
  • 7.1.2 Mach 头部
  • 7.1.3 Load command
  • 7.1.4 符号表与字符串表
  • 7.2 CFString 的运行过程
  • 7.2.1 编写测试代码
  • 7.2.2 CFString 的数据结构
  • 7.2.3 调试运行过程
  • 7.3 Mach-O ARM 函数绑定的调用过程分析
  • 7.3.1 编写测试代码
  • 7.3.2 分析 ARMv7 函数绑定的调用过程
  • 7.3.3 分析 ARM64 函数绑定的调用过程
  • 7.3.4 总结
  • 7.4 静态库文件格式
  • 7.5 class-dump 导出头文件的原理
  • 7.6 关于 Bitcode
  • 7.6.1 Bitcode 的作用
  • 7.6.2 在 Xcode 中如何生成 Bitcode
  • 7.6.3 通过命令行编译 Bitcode
  • 7.6.4 将 Bitcode 编译成可执行文件
  • 7.6.5 编译器相关参数
  • 第8章 唯一设备ID
  • 8.1 UDID 与设备 ID
  • 8.1.1 编写 mobileconfig
  • 8.1.2 编写 receive.php
  • 8.1.3 安装描述文件
  • 8.1.4 mobileconfig 签名
  • 8.2 IDFA
  • 8.3 IDFV
  • 8.4 OpenUDID
  • 8.5 SimulateIDFA
  • 8.6 MAC 地址
  • 8.7 ID 的持久化存储
  • 8.7.1 Keychain 的存储
  • 8.7.2 剪贴板
  • 8.8 DeviceToken
  • 第9章 刷量与作弊
  • 9.1 越狱环境下获取 root 权限
  • 9.1.1 在 iOS 8 ~ iOS 10 中获取 root 权限
  • 9.1.2 在 iOS 11 ~ iOS 14 中获取 root 权限
  • 9.2 修改手机信息
  • 9.2.1 修改基本信息
  • 9.2.2 修改 Wi-Fi 信息与运营商
  • 9.2.3 修改 DeviceToken
  • 9.2.4 修改位置信息
  • 9.2.5 修改系统启动时间
  • 9.2.6 修改屏幕亮度、音量和电池电量
  • 9.2.7 修改磁盘空间与内存
  • 9.2.8 修改网络 IP 地址、MAC 地址、DNS
  • 9.2.9 修改上网类型
  • 9.2.10 修改系统版本与机型
  • 9.2.11 绕过 VPN 与 HTTP 代理检测
  • 9.3 清除数据
  • 9.3.1 清除沙盒目录
  • 9.3.2 清除 Keychain
  • 9.3.3 清除剪贴板
  • 9.3.4 清除 AppGroup
  • 9.3.5 清除 iTunes 信息
  • 9.4 发布应用
  • 9.4.1 将 App 打包成 deb 格式
  • 9.4.2 制作 Cydia 源发布应用
  • 9.5 权限的切换
  • 9.6 变化 IP 地址
  • 9.7 反越狱检测
  • 9.8 不用越狱修改任意位置信息
  • 9.9 在两台手机上同时登录同一微信
  • 9.10 微信的 62 数据
  • 第10章 重要信息获取与取证
  • 10.1 通讯录
  • 10.2 短信
  • 10.3 通话记录
  • 10.4 位置信息
  • 10.5 网络信息
  • 10.5.1 上网类型
  • 10.5.2 热点信息
  • 10.5.3 DNS 信息
  • 10.5.4 IP 地址
  • 10.5.5 代理信息
  • 10.6 传感器信息
  • 10.6.1 加速计
  • 10.6.2 陀螺仪
  • 10.6.3 磁力计
  • 10.6.4 气压计
  • 10.7 系统信息
  • 10.8 硬件 ID 信息
  • 10.9 已安装的应用列表
  • 10.10 使用 idb 分析泄露的数据
  • 10.10.1 安装和运行
  • 10.10.2 使用方法
  • 10.11 重要的文件与目录
  • 10.11.1 照片
  • 10.11.2 Safari 浏览器书签
  • 10.11.3 Wi-Fi 历史连接记录
  • 10.11.4 应用快照
  • 10.11.5 录音
  • 10.12 libimobiledevice 获取手机信息
  • 第11章 应用破解
  • 11.1 重打包应用与多开
  • 11.1.1 重打包应用
  • 11.1.2 多开
  • 11.2 应用重签名
  • 11.2.1 代码签名
  • 11.2.2 授权机制
  • 11.2.3 配置文件
  • 11.2.4 重签名
  • 11.3 抓包和改包
  • 11.3.1 tcpdump 抓包
  • 11.3.2 Wireshark 抓包
  • 11.3.3 Charles 抓取 HTTPS 数据包
  • 11.3.4 Charles 修改数据包与重发
  • 11.3.5 突破 SSL 双向认证
  • 11.4 文件监控
  • 11.5 破解登录验证
  • 11.5.1 得到 HTTP 传输的数据
  • 11.5.2 得到解密的数据
  • 11.5.3 破解方法
  • 第12章 应用保护
  • 12.1 函数名混淆
  • 12.2 字符串加密
  • 12.2.1 宏定义加密字符串
  • 12.2.2 栈字符串加密
  • 12.3 代码混淆
  • 12.3.1 inline 内联函数
  • 12.3.2 obfuscator-llvm 编译器
  • 12.3.3 Xcode 集成配置 obfuscator-llvm
  • 12.3.4 Theos 集成配置 obfuscator-llvm
  • 12.3.5 HikariObfuscator
  • 12.4 越狱检测
  • 12.4.1 判断相关文件是否存在
  • 12.4.2 直接读取相关文件
  • 12.4.3 使用 stat 函数判断文件
  • 12.4.4 检查动态库列表
  • 12.4.5 检查环境变量
  • 12.4.6 检查函数是否被劫持
  • 12.4.7 syscall 和汇编判断文件
  • 12.5 反盗版
  • 12.5.1 检查 Bundle identifier
  • 12.5.2 检查来源是否为 App Store
  • 12.5.3 检查重签名
  • 12.5.4 代码校验
  • 12.6 反调试与反反调试
  • 12.6.1 反调试方法
  • 12.6.2 反反调试
  • 12.7 反注入与反反注入
  • 12.8 防止被抓包
  • 第13章 代码入口点劫持
  • 13.1 实现原理
  • 13.2 编写 ShellCode
  • 13.2.1 编写 ARM 汇编
  • 13.2.2 计算 main 函数的跳转地址
  • 13.2.3 最终的 ShellCode
  • 13.3 插入代码
  • 13.4 修改入口点
  • 13.4.1 关于指令切换
  • 13.4.2 ARMv7 入口点
  • 13.4.3 ARM64 入口点
  • 13.5 重签名
  • 第14章 写壳内幕
  • 14.1 判断文件格式类型
  • 14.2 代码的插入
  • 14.3 修改程序入口点
  • 14.4 ShellCode 如何调用函数
  • 14.5 编写和调试 ShellCode
  • 14.5.1 ARMv7 ShellCode
  • 14.5.2 ARM64 ShellCode
  • 14.6 总结
  • 第15章 系统相关
  • 15.1 Cydia 的相关问题及修复方法
  • 15.1.1 使用 h3lix 越狱后,Cydia 不能上网
  • 15.1.2 越狱后抹掉所有内容修复 Cydia
  • 15.1.3 Cydia 不能上网的终极解决方法
  • 15.2 降级传说
  • 15.2.1 iPhone 5 降级到 8.4.1
  • 15.2.2 iPhone 5s 降级到 10.3.3
  • 15.3 访问限制密码的安全隐患
  • 15.3.1 访问限制密码
  • 15.3.2 备份密钥数据
  • 15.3.3 暴力破解密码
  • 15.4 扫码在线安装应用
  • 15.4.1 安装 Apache
  • 15.4.2 配置自签名证书支持 HTTPS
  • 15.4.3 下载安装应用
  • 15.4.4 购买认证的 SSL 证书
  • 15.5 CVE-2018-4407 远程溢出漏洞
  • 15.6 解决磁盘空间不足的问题
  • 15.7 解决 h3lix 重签名后越狱失败
  • 15.8 解决 iOS 12 启动进程提示 Killed:9 的问题
  • 15.9 iPhone 安装 Android 系统
  • 第16章 LLVM编译器代码混淆的原理
  • 16.1 开发和调试 Pass
  • 16.1.1 编写第一个 LLVM Pass
  • 16.1.2 编写 Pass 获取基本块和指令
  • 16.1.3 将 Pass 编译到 Clang
  • 16.2 移植代码混淆 Pass
  • 16.2.1 移植代码
  • 16.2.2 安装 graphivz
  • 16.2.3 设置 opt 的启动参数
  • 16.3 从源码角度解读代码混淆 Pass
  • 16.3.1 flattening
  • 16.3.2 boguscf
  • 16.3.3 substitution
  • 16.3.4 indirectbr
  • 附录A 书中用到的工具列表
  • 附录B 机型代号列表
展开全部

评分及书评

评分不足
1个评分
  • 用户头像
    给这本书评了
    5.0

    随着移动互联网的飞速发展,智能手机已经成为人们生活中不可或缺的物品之一。苹果公司的 iOS 设备市场占有率很大,不论是安全研究员还是应用开发者,都有必要了解和学习与 iOS 安全相关的技术。目前,国内外虽有几本关于 iOS 安全的图书,但内容都比较旧,有些知识点已经无法让读者方便地应用于测试和实战。我写本书的主要目的是将自己在工作与实战中的经验总结成一套完整的 iOS 安全知识体系,并提供给读者,让读者可以在学习过程中少走弯路。

      转发
      评论

    出版方

    人民邮电出版社

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