具体描述
《iOS应用逆向与安全》从正向开发、工具的使用、逆向实战及安全保护等方面,对iOS应用的逆向与安全进行了讲解。本书内容包括基本概念、逆向环境的准备、常用逆向分析工具、类的结构、App签名、Mach-O文件格式、hook原理等,并通过在越狱平台和非越狱平台上的逆向分析实例,带领读者学习逆向分析的思路和方法。在应用安全及保护方面,本书内容涉及网络传输、安全检测、代码混淆等。
《iOS应用逆向与安全》适合高校计算机相关专业的学生、iOS开发工程师、逆向工程师、越狱开发工程师、iOS安全工程师及应用安全审计人员阅读参考。
作者简介
刘培庆(@Alone_Monkey)
iOS逆向爱好者,网易云课堂“iOS逆向与安全”主讲。大学毕业后在网易负责iOS安全保护、基础组件开发、质量保障等工作。目前就职于阿里巴巴米诺斯实验室,从事安全保护相关工作。开源作品有MonkeyDev、frida-ios-dump等
目录信息
1.1 逆向工程简介 1
1.1.1 iOS逆向学习基础 1
1.1.2 iOS逆向的流程 1
1.1.3 iOS逆向使用的工具 2
1.1.4 iOS逆向的应用场景 2
1.2 应用面临的安全风险 2
1.2.1 静态修改文件 3
1.2.2 动态篡改逻辑 3
1.2.3 协议分析 3
1.3 应用保护手段 3
1.3.1 数据加密 3
1.3.2 程序混淆 4
1.3.3 安全监测 4
1.4 本书工具 4
1.4.1 效率工具 4
1.4.2 实用工具 5
1.4.3 逆向工具 5
第2章 越狱设备
2.1 什么是越狱 6
2.2 Cydia 6
2.3 SSH 7
2.3.1 安装OpenSSH 8
2.3.2 配置dropbear 10
2.3.3 修改默认密码 11
2.3.4 公钥登录 11
2.3.5 通过USB登录 13
2.4 iOS系统结构 14
2.4.1 文件目录 15
2.4.2 文件权限 17
2.5 Cydia Substrate 18
2.5.1 MobileHooker 19
2.5.2 MobileLoader 19
2.5.3 Safe mode 20
2.6 越狱必备工具 21
2.6.1 adv-cmds 21
2.6.2 appsync 21
2.6.3 iFile 21
2.6.4 scp 22
第3章 逆向工具详解
3.1 应用解密 23
3.1.1 dumpdecrypted 23
3.1.2 Clutch 28
3.1.3 小结 30
3.2 class-dump 30
3.2.1 class-dump的使用 30
3.2.2 class-dump的原理 33
3.2.3 OC和Swift混编 40
3.3 Reveal 41
3.3.1 开发集成Reveal 41
3.3.2 越狱注入Reveal 42
3.4 Cycript 43
3.4.1 开发集成Cycript 44
3.4.2 使用Cycript越狱 45
3.4.3 使用Cycript分析应用 46
3.4.4 Cycript的高级用法 49
3.5 抓包 52
3.5.1 Charles抓包 53
3.5.2 修改网络请求 55
3.5.3 HTTPS抓包 59
3.5.4 Wireshark抓包 60
第4章 开发储备
4.1 App的结构及构建 66
4.1.1 获取应用包 66
4.1.2 应用包的格式 71
4.1.3 应用的构建过程 72
4.2 界面结构和事件传递 76
4.2.1 界面的组成 76
4.2.2 界面事件的响应 79
4.3 类与方法 83
4.3.1 类与方法的底层实现 84
4.3.2 运行时类的结构 89
4.3.3 消息机制 91
4.3.4 runtime的应用 94
4.4 App签名 98
4.4.1 配置Xcode签名 98
4.4.2 App签名的原理 100
4.4.3 重签名 107
第5章 分析与调试
5.1 静态分析 109
5.1.1 Hopper 109
5.1.2 IDA 118
5.1.3 静态库分析 125
5.2 动态调试 128
5.2.1 LLDB调试 128
5.2.2 LLDB解密 141
5.2.3 用Xcode调试第三方应用 144
5.2.4 LLDB的高级调试技巧 151
5.3 Theos 167
5.3.1 Theos的安装 168
5.3.2 Theos的基本应用 168
5.3.3 Theos的高级应用 172
5.4 MonkeyDev 177
5.4.1 安装MonkeyDev 178
5.4.2 Logos Tweak 179
5.4.3 CaptainHook Tweak 181
5.4.4 Command-line Tool 185
第6章 逆向进阶
6.1 程序加载 186
6.1.1 dyld简介 186
6.1.2 dyld加载流程 187
6.2 Mach-O文件格式 206
6.2.1 Mach-O文件的基本格式 206
6.2.2 Mach-O头部 208
6.2.3 Load Command 210
6.2.4 虚拟地址和文件偏移 214
6.2.5 懒加载和非懒加载 217
6.2.6 Code Signature 223
6.3 ARM汇编 228
6.3.1 ARM架构和指令集 228
6.3.2 AArch64寄存器 229
6.3.3 指令集编码 231
6.3.4 AArch64指令 233
6.3.5 栈和方法 236
6.3.6 Objective-C汇编 245
6.4 hook 247
6.4.1 Method Swizzle 247
6.4.2 fishhook 248
6.4.3 Cydia Substrate 253
6.4.4 Swift hook 256
6.5 动态库 259
6.5.1 编译和注入 260
6.5.2 导出和隐藏符号 260
6.5.3 C++ 和OC动态库 263
6.5.4 其他常见问题 267
第7章 实战演练
7.1 越狱设备分析 270
7.1.1 分析准备 270
7.1.2 开始分析 272
7.1.3 编写Tweak 284
7.1.4 安装与小结 287
7.2 非越狱设备分析 288
7.2.1 创建MonkeyDev项目 288
7.2.2 非越狱逆向实战 291
7.2.3 编写hook代码 303
7.2.4 制作非越狱Pod 304
7.2.5 小结 308
7.3 Frida实战应用 309
7.3.1 Frida的安装 309
7.3.2 Frida的初级使用 311
7.3.3 Frida的高级使用 319
7.3.4 小结 326
第8章 安全保护
8.1 数据加密 327
8.1.1 本地存储加密 328
8.1.2 网络传输加密 328
8.1.3 字符串加密 333
8.2 静态混淆 341
8.2.1 宏定义 342
8.2.2 二进制修改 347
8.3 动态保护 349
8.3.1 反调试 349
8.3.2 反反调试 352
8.3.3 反注入 359
8.3.4 hook检测 360
8.3.5 完整性校验 361
8.4 代码混淆 363
8.4.1 什么是LLVM 363
8.4.2 下载和编译LLVM 364
8.4.3 开发和调试Pass 366
8.4.4 OLLVM源代码分析 373
8.4.5 替换Xcode编译器 379
8.4.6 静态库混淆 389
8.5 本章总结 390
· · · · · · (收起)
读后感
用户评价
这本书如果真的涵盖了“安全”这一主题,那么它在方法论上的阐述就显得尤为重要。我指的不是具体的攻击代码,而是如何建立一套科学的分析框架。比如,面对一个未知的应用二进制文件,应该从何处入手?是先进行静态分析还是动态调试?如何有效地识别关键的安全边界和数据流?我希望作者能够构建一个清晰的、可复用的安全评估流程图。这种结构化的思维模型,远比零散的技巧集合更有价值,它能帮助我在面对全新的安全挑战时,依然能保持条理清晰,有章可循。一个真正有深度的安全书籍,应该教会读者思考的方法,而不是仅仅提供现成的答案。这种对思维模式的塑造,是我衡量一本书是否值得反复研读的关键标准。
我对技术书籍的评价标准之一,是作者的叙事风格是否能够保持读者的专注度。很多技术书籍写得像是教科书,过于严谨和刻板,读起来像是在啃硬骨头。我更欣赏那种带着个人见解和行业经验的写作方式。如果作者能在讲解复杂概念时,穿插一些他自己早期摸索逆向领域时遇到的“坑”或者“ Aha! ”瞬间,那会大大增加阅读的趣味性和代入感。毕竟,逆向工程这个领域充满了试错和探索,分享这些心路历程,能让读者感觉自己不是孤军奋战。我希望这本书的行文是流畅且富于洞察力的,能够引导我思考“为什么是这样设计”,而不是仅仅停留在“它就是这样”的层面。这种深层次的提问和解答,才是一个优秀技术导师能够给予读者的最大馈赠。
这本书的封面设计非常引人注目,那种深邃的蓝黑色调,加上抽象的电路板纹理,瞬间就抓住了我的眼球。我是一个对移动设备底层技术充满好奇的开发者,一直想深入了解iOS系统是如何工作的,特别是那些隐藏在应用商店光鲜外表之下的安全机制。这本书的标题虽然直白,但给我的第一印象是它可能会提供一个技术含量非常高的深度解析。我期望看到对Mach-O文件格式、Objective-C运行时机制的详尽剖析,以及如何利用这些知识点进行调试和分析。想象一下,能够自己动手去探索那些平时只能依赖调试器工具观察到的内部结构,这本身就是一种极大的技术享受。我希望作者能用清晰的语言,将复杂的概念层层剥开,即便是初次接触逆向工程的读者也能循序渐进地跟上节奏。如果书中能包含一些实际案例,比如分析一个应用权限滥用的场景,那就更完美了,那将是理论与实践结合的最佳体现。这种对技术内核的追逐,正是吸引我翻开这本书的主要动力。
从我个人的学习路径来看,我更偏向于通过实战项目来学习新技术,枯燥的理论堆砌往往让我难以深入。因此,我对这本书的实战性有着极高的期待。我希望它不仅仅停留在理论介绍,而是能提供一系列精心设计的实验环境和操作步骤。比如,如何搭建一个完全隔离的调试环境,如何使用 Hopper 或 IDA Pro 对特定函数进行反编译和重构,以及如何绕过常见的代码混淆技术。这些都是我在日常工作中,为了保证自身应用安全或进行漏洞分析时迫切需要的技能。如果书中能提供配套的源码或脚本示例,那就太棒了,我可以边看边敲,确保每一步都理解到位。一本好的技术书籍,其价值往往体现在它能多大程度上赋能读者,让他们真正掌握一门技术,而不是仅仅停留在“了解”的层面。这种手把手的指导,对于快速建立技术信心至关重要。
作为一名资深的技术爱好者,我通常会关注一本书在细节处理上的严谨性。在逆向领域,一个微小的版本差异或者一个参数顺序的错误,都可能导致整个分析过程陷入僵局。因此,我对书中引用的所有工具版本、操作系统环境(比如iOS的具体版本兼容性)都会格外留意。我非常看重技术资料的时效性和准确性,毕竟苹果的安全机制迭代速度非常快。如果这本书能提供关于如何应对最新iOS版本安全特性的探讨,或者对未来可能的技术演进做出一些前瞻性的分析,那它的价值将得到几何级的提升。我希望看到的不是停留在几年前技术快照的记录,而是一个能够引导我持续学习和跟进前沿动态的指南。细节决定成败,尤其是在这种对精确度要求极高的技术领域。
一本不错的iOS初级逆向工具书,至少不用再去一篇篇翻博客了!查漏补缺
第四章 4.4节 APP签名这部分写的太简略了,可以分析的更详细些;第六章除了6.3节arm汇编外,其他内容感觉好深看不懂;最后一章写的有点杂乱,如果能把几种防护和破防护之间关联起来会更好。逆向总共就两本书,整体上本书其实可以作为《iOS逆向工程》的一个还不错的补充,里边LLDB的一些细节很有用。写书都不容易,给作者点赞。
第四章 4.4节 APP签名这部分写的太简略了,可以分析的更详细些;第六章除了6.3节arm汇编外,其他内容感觉好深看不懂;最后一章写的有点杂乱,如果能把几种防护和破防护之间关联起来会更好。逆向总共就两本书,整体上本书其实可以作为《iOS逆向工程》的一个还不错的补充,里边LLDB的一些细节很有用。写书都不容易,给作者点赞。
匆匆翻了一遍
一本不错的iOS初级逆向工具书,至少不用再去一篇篇翻博客了!查漏补缺