万本电子书0元读

万本电子书0元读

顶部广告

iOS黑客攻防秘籍(第2版)电子书

1.本书的主要特是能够让初学者快速门并学习到iOS安全技术的精髓,易学易懂,带领读者直奔主题,内容覆盖iOS 8到iOS 14。 2.本书细致讲解了iOS系统的逆向分析与攻防对抗技术,从越狱环境的发与逆向的相关工具,由浅深的延伸到各个主题。 3.本书作者曾创建小型技术论坛供读者交流,并在看雪论坛发表过多篇热帖,该书也受到了看雪论坛iOS安全版主等多名业内人士力荐。

售       价:¥

纸质售价:¥102.50购买纸书

35人正在读 | 0人评论 6.2

作       者:陈德 著

出  版  社:人民邮电出版社有限公司

出版时间:2021-10-01

字       数:52.0万

所属分类: 科技 > 计算机/网络 > 软件系统

温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印

为你推荐

  • 读书简介
  • 目录
  • 累计评论(0条)
  • 读书简介
  • 目录
  • 累计评论(0条)
本书内容易于理解,可以让读者循序渐、系统性地学习iOS安全技术。全书共16章,知识覆盖iOS 8到iOS 14。书中首先细致地介绍了越狱环境的发与逆向相关工具,然后依次讲解了汇编基础、动态调用、静态分析、注与hook、文件格式,后为大家呈现了应用破解与应用保护、隐私获取与取证、刷量与作弊、设备ID、写壳内幕等多个主题。<br/>【推荐语】<br/>1.本书的主要特是能够让初学者快速门并学习到iOS安全技术的精髓,易学易懂,带领读者直奔主题,内容覆盖iOS 8到iOS 14。 2.本书细致讲解了iOS系统的逆向分析与攻防对抗技术,从越狱环境的发与逆向的相关工具,由浅深的延伸到各个主题。 3.本书作者曾创建小型技术论坛供读者交流,并在看雪论坛发表过多篇热帖,该书也受到了看雪论坛iOS安全版主等多名业内人士力荐。 4.和上一版相比,本书的知识体系更加完整,新增了更多技术难题和解决方案。<br/>【作者】<br/>陈德 软件安全研究员,2007年始自学安全技术,师出《黑客防线》,在安全领域精通多方面技术,个人作品有eXfaker、FileMonitorKit、SystemKit等,<br/>
目录展开

前言

写作目的

特点与内容

适合人群

勘误与支持

使用的设备

免责声明

致谢

第 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 debugserver 的配置与启动

2.5.2 LLDB 连接 debugserver 及其调试

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 机型代号列表

累计评论(0条) 0个书友正在讨论这本书 发表评论

发表评论

发表评论,分享你的想法吧!

买过这本书的人还买过

读了这本书的人还在读

回顶部