计算机
类型
可以朗读
语音朗读
491千字
字数
2021-10-01
发行日期
展开全部
主编推荐语
本书细致讲解了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 机型代号列表
展开全部
出版方
人民邮电出版社
人民邮电出版社是工业和信息化部主管的大型专业出版社,成立于1953年10月1日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。