具体描述
你是否曾因应用上线的第一天即遭破解而无奈苦恼,想要加以防范,却又束手无策?
你是否曾为某一应用深深折服,想要借鉴学习,却又无从下手?
你是否已不满足于public API,想要进军Cydia开发,却又求学无门?
你是否已产生“不识Apple真面目,只缘身在App Store中”的危机感,想要通过阅读来一窥这冰山一角外的整个北极,却又找不到合适的书?
你是否已经因无法跨越开发路上的重重障碍而断了研究iOS逆向工程的念头?Are you a quitter?看完本书,相信你会有全新的感受!
全球第一本讲解iOS8应用逆向工程的实战手册,作者毫无保留地分享了数年来在iOS逆向工程领域的经验。
内容系统深入,逻辑紧密,实战性强,从iOS系统架构等理论出发,以多个实例贯穿全书,阐述class-dump、Theos、Cycript、Reveal、IDA、LLDB等常用工具的使用,通俗易懂。
总结提炼出一套从UI观察切入代码分析的iOS应用逆向工程方法论,授人以渔。
作者简介
沙梓社,iOS越狱社区骨灰级活跃份子,思路开阔思想传统,对苹果的研究痴迷到连女朋友都没有的地步。作品见诸于Cydia,有SMSNinja、LowPowerBanner、DimInCall等。
吴航,十余年程序开发经验的资深码农,历经方正、NEC、Juniper等国内国外知名IT企业,2011年进入iOS领域,专注于iOS app/逆向等方向的开发,主要作品有安全管家、知乎月刊HD等。
目录信息
推荐序二
第2版序
第1版序
前言
第一部分 概 念 篇
第1章 iOS逆向工程简介 3
1.1 iOS逆向工程的要求 3
1.2 iOS应用逆向工程的作用 4
1.2.1 安全相关的iOS逆向工程 5
1.2.2 开发相关的iOS逆向工程 6
1.3 iOS应用逆向工程的过程 7
1.3.1 系统分析 7
1.3.2 代码分析 8
1.4 iOS应用逆向工程的工具 8
1.4.1 监测工具 9
1.4.2 反汇编工具 9
1.4.3 调试工具 10
1.4.4 开发工具 11
1.5 小结 11
第2章 越狱iOS平台简介 12
2.1 iOS系统结构 12
2.1.1 iOS目录结构简介 13
2.1.2 iOS文件权限简介 16
2.2 iOS二进制文件类型 17
2.2.1 Application 17
2.2.2 Dynamic Library 20
2.2.3 Daemon 20
2.3 小结 22
第二部分 工 具 篇
第3章 OSX工具集 25
3.1 class-dump 25
3.2 Theos 27
3.2.1 Theos简介 27
3.2.2 安装Theos 28
3.2.3 Theos用法介绍 30
3.2.4 Theos开发tweak示例 51
3.3 Reveal 53
3.4 IDA 57
3.4.1 IDA简介 57
3.4.2 IDA使用说明 58
3.4.3 IDA分析示例 68
3.5 iFunBox 71
3.6 dyld_decache 72
3.7 小结 73
第4章 iOS工具集 74
4.1 CydiaSubstrate 74
4.1.1 MobileHooker 74
4.1.2 MobileLoader 84
4.1.3 Safe mode 84
4.2 Cycript 85
4.3 LLDB与debugserver 89
4.3.1 LLDB简介 89
4.3.2 debugserver简介 90
4.3.3 配置debugserver 90
4.3.4 用debugserver启动或附加进程 91
4.3.5 LLDB的使用说明 92
4.3.6 LLDB使用小提示 107
4.4 dumpdecrypted 107
4.5 OpenSSH 111
4.6 usbmuxd 112
4.7 iFile 113
4.8 MTerminal 114
4.9 syslogd to /var/log/syslog 115
4.10 小结 115
第三部分 理 论 篇
第5章 Objective-C相关的iOS逆向理论基础 119
5.1 tweak在Objective-C中的工作方式 119
5.2 tweak 的编写套路 121
5.2.1 寻找灵感 121
5.2.2 定位目标文件 123
5.2.3 定位目标函数 127
5.2.4 测试函数功能 129
5.2.5 解析函数参数 130
5.2.6 class-dump的局限性 133
5.3 实例演示 133
5.3.1 得到灵感 134
5.3.2 定位文件 135
5.3.3 定位函数 143
5.3.4 测试函数 145
5.3.5 编写实例代码 145
5.4 小结 147
第6章 ARM汇编相关的iOS逆向理论基础 148
6.1 ARM汇编基础 148
6.1.1 基本概念 149
6.1.2 ARM/THUMB指令解读 152
6.1.3 ARM调用规则 159
6.2 tweak的编写套路 161
6.2.1 从现象切入App,找出UI函数 162
6.2.2 以UI函数为起点,寻找目标函数 173
6.3 LLDB的使用技巧 203
6.3.1 寻找函数调用者 203
6.3.2 更改进程执行逻辑 208
6.4 小结 211
第四部分 实 战 篇
第7章 实战1:Characount for Notes 8 215
7.1 备忘录 215
7.2 搭建tweak原型 216
7.2.1 定位Notes的可执行文件 217
7.2.2 class-dump出MobileNotes的头文件 218
7.2.3 用Cycript找到阅览界面及其controller 218
7.2.4 从NoteDisplayController找到当前note对象 220
7.2.5 找到实时监测note内容变化的方法 223
7.3 逆向结果整理 227
7.4 编写tweak 228
7.4.1 用Theos新建tweak工程“CharacountForNotes8” 228
7.4.2 构造CharacountForNotes8.h 229
7.4.3 编辑Tweak.xm 229
7.4.4 编辑Makefile及control 230
7.4.5 测试 230
7.5 小结 233
第8章 实战2:自动将指定电子邮件标记为已读 234
8.1 电子邮件 234
8.2 搭建tweak原型 235
8.2.1 定位Mail的可执行文件并class-dump它 237
8.2.2 把头文件导入Xcode 238
8.2.3 用Cycript找到Mailboxes界面的controller 239
8.2.4 用Reveal和Cycript找到All Inboxes界面的delegate 240
8.2.5 在MailboxContentViewController中定位“刷新完成”的响应函数 242
8.2.6 从MessageMegaMall中拿到所有邮件 246
8.2.7 从MFLibraryMessage中提取发件人地址,用MessageMegaMall标记
已读 248
8.3 逆向结果整理 254
8.4 编写tweak 255
8.4.1 用Theos新建tweak工程“iOSREMailMarker” 255
8.4.2 构造iOSREMailMarker.h 255
8.4.3 编辑Tweak.xm 256
8.4.4 编辑Makefile及control 257
8.4.5 测试 258
8.5 小结 259
第9章 实战3:保存与分享微信小视频 260
9.1 微信 260
9.2 搭建tweak原型 261
9.2.1 观察小视频播放窗口,寻找逆向切入点 261
9.2.2 class-dump获取头文件 262
9.2.3 把头文件导入Xcode 263
9.2.4 用Reveal找到小视频播放窗口 264
9.2.5 找到长按手势响应函数 265
9.2.6 用Cycript定位小视频的controller 270
9.2.7 从WCTimeLineViewController找到小视频对象 272
9.2.8 从WCContentItemViewTemplateNewSight中提取WCDataItem对象 276
9.2.9 从WCDataItem中提取目标信息 278
9.3 逆向结果整理 288
9.4 编写tweak 289
9.4.1 用Theos新建tweak工程“iOSREWCVideoDownloader” 289
9.4.2 构造iOSREWCVideoDownloader.h 289
9.4.3 编辑Tweak.xm 290
9.4.4 编辑Makefile及control 292
9.4.5 测试 293
9.5 彩蛋放送 294
9.5.1 从UIMenuItem切入,找到小视频对象 294
9.5.2 微信历史版本头文件个数变迁 295
9.6 小结 298
第10章 实战4:检测与发送iMessage 299
10.1 iMessage 299
10.2 检测一个号码或邮箱地址是否支持iMessage 299
10.2.1 观察MobileSMS界面元素的变化,寻找逆向切入点 299
10.2.2 用Cycript找出placeholder 302
10.2.3 用IDA和LLDB找出placeholderText的一重数据源 308
10.2.4 用IDA和LLDB找出placeholderText的N重数据源 311
10.2.5 还原原始数据源生成placeholderText的过程 340
10.3 发送iMessage 341
10.3.1 从MobileSMS界面元素寻找逆向切入点 341
10.3.2 用Cycript找出“Send”按钮的响应函数 342
10.3.3 在响应函数中寻找可疑的发送操作 344
10.4 逆向结果整理 369
10.5 编写tweak 370
10.5.1 用Theos新建tweak工程“iOSREMadridMessenger” 370
10.5.2 构造iOSREMadridMessenger.h 371
10.5.3 编辑Tweak.xm 372
10.5.4 编辑Makefile及control 372
10.5.5 用Cycript测试 373
10.6 小结 373
越狱开发一览 375
沙箱逃脱 380
编写tweak——新时代的hacking 382
· · · · · · (收起)
读后感
这本书可以算是第一本系统介绍越狱开发的书,正是这本书为我打开了越狱开发的大门,并从此一发不可收拾。 虽然这本书是面向新手的,但是事实上,这里的新手指的是越狱开发的新手。想要学这本书,你至少要拥有正向开发的经验,如果没有正向开发的经验,对于 iOS 开发中的一些常...
这绝对不是一本将官方文档Copy过来的所谓的”快速入门指南“ 这绝对不是一本不接地气夸夸其谈实际上啥内容都没有的所谓的马桶读物 这是一本难得的由国内的作者写的有很多干货的经典参考 逆向工程、反编译、破/解 对于很多开发者同学们都比较神秘且具有非常强大的吸引力。作者...
这绝对不是一本将官方文档Copy过来的所谓的”快速入门指南“ 这绝对不是一本不接地气夸夸其谈实际上啥内容都没有的所谓的马桶读物 这是一本难得的由国内的作者写的有很多干货的经典参考 逆向工程、反编译、破/解 对于很多开发者同学们都比较神秘且具有非常强大的吸引力。作者...
这本书可以算是第一本系统介绍越狱开发的书,正是这本书为我打开了越狱开发的大门,并从此一发不可收拾。 虽然这本书是面向新手的,但是事实上,这里的新手指的是越狱开发的新手。想要学这本书,你至少要拥有正向开发的经验,如果没有正向开发的经验,对于 iOS 开发中的一些常...
这绝对不是一本将官方文档Copy过来的所谓的”快速入门指南“ 这绝对不是一本不接地气夸夸其谈实际上啥内容都没有的所谓的马桶读物 这是一本难得的由国内的作者写的有很多干货的经典参考 逆向工程、反编译、破/解 对于很多开发者同学们都比较神秘且具有非常强大的吸引力。作者...
用户评价
这本书的出现,简直是给我这位iOS安全领域的“小白”注入了一剂强心针!我之前尝试过阅读一些零散的资料,但总是感觉碎片化,缺乏系统性。而《iOS应用逆向工程 第2版》就像一座灯塔,为我指明了前进的方向。我非常欣赏它循序渐进的讲解方式。从最初的Mach-O文件结构剖析,到Objective-C的消息传递机制,再到Swift的语法糖背后隐藏的编译原理,每一步都紧密衔接,层层递进,让人感觉学习过程非常顺畅。尤其是书中对Objective-C Runtime的深入解析,那些看似高深的运行时函数和消息转发机制,在作者的阐述下变得生动形象,甚至让我开始重新审视那些我习以为常的Objective-C代码。我一直对HOOK技术很感兴趣,想知道是如何做到在不修改源码的情况下改变程序行为的,这本书在这方面提供了详细的指导,从原理到实践,都讲解得淋漓尽致。而且,书中的代码示例都是可以直接运行和调试的,这对于我们这些动手能力强、喜欢边学边练的学习者来说,简直是太棒了!我迫不及待地想跟着书中的步骤,亲手去体验一下逆向工程的魅力,去解开那些隐藏在App背后的秘密。
我是一位对技术有着狂热追求的iOS爱好者,虽然不是科班出身,但对于iOS底层和安全领域有着浓厚的兴趣。《iOS应用逆向工程 第2版》这本书,可以说是满足了我对未知的好奇心,也为我打开了通往更深层次理解iOS应用世界的大门。我非常欣赏书中对于Objective-C和Swift混编应用的分析。在实际开发中,很多项目都存在混编的情况,如何理解不同语言在运行时交互的细节,以及在逆向分析时如何处理这种混编带来的复杂性,一直是我比较困惑的问题。这本书的出现,让我看到了解决这个问题的希望。书中对类加载、方法调用、内存布局等概念的解释,用一种非常易于理解的方式呈现,即使对于我这样背景的读者,也不会感到过于晦涩。而且,书中还提到了很多关于App Store审核和上架的一些隐晦的安全要求,这对我来说是全新的视角,让我认识到安全与合规是相辅相成的。这本书的内容之丰富,让我感觉就像是在听一位资深专家分享他的独家秘籍,充满了启发性和实践指导意义。
作为一名初入iOS安全领域的研究生,我常常感到迷茫,不知道从何处入手。幸运的是,我发现了《iOS应用逆向工程 第2版》。这本书就像一位经验丰富的导师,耐心地引导我一步步探索iOS应用的奥秘。我特别喜欢书中对不同调试工具和方法的介绍,比如 Hopper Disassembler、IDA Pro、Frida 等等,并详细说明了它们在不同场景下的使用技巧。我之前对这些工具只是有所耳闻,但从未真正掌握。这本书提供了清晰的操作指南和丰富的实例,让我能够快速上手,并理解它们的工作原理。此外,书中关于反调试和反反调试技术的讨论,也让我对iOS应用的安全防护有了更深的认识。我一直好奇,开发者是如何保护自己的应用不被轻易破解的,这本书为我揭示了其中的一些秘密,也让我思考如何才能设计出更安全的应用。这本书的价值在于它不仅提供了理论知识,更强调实践操作,这对于我们这些需要动手做研究的学生来说,是极其宝贵的。
拿到《iOS应用逆向工程 第2版》这本书,我简直就像发现了宝藏!作为一名对iOS安全和底层技术充满好奇的开发者,我一直在寻找一本既权威又实用的指南。这本书的封面设计就透露出一种专业和深入的气息,让我对即将展开的探索之旅充满了期待。首先,这本书的装帧和排版非常精良,纸张质量上乘,阅读起来舒适度很高,细节之处彰显了出版方的用心。而且,书中穿插的图例和代码示例都经过精心设计,清晰明了,即使是初学者也能快速理解复杂的概念。从目录上看,它涵盖了iOS逆向工程的方方面面,从基础的Mach-O文件格式分析,到Objective-C和Swift的运行时机制,再到更高级的Hooking技术和安全防护策略,内容之全面让我应接不暇,但也正是我所需要的。我特别期待能够深入了解Objective-C的Runtime和Swift的底层实现,因为这对于理解iOS应用的运行机制至关重要,而这本书似乎在这方面有独到的见解。这本书的作者显然是一位经验丰富的实践者,他的文字中透露出一种对技术的深刻理解和对安全的热情,这让我对书中内容的价值充满了信心。总而言之,这本书不仅仅是一本技术手册,更是一次引导我深入iOS世界的大门,让我能够以全新的视角去审视和理解我每天都在使用的App。
我是一名资深的iOS开发者,对应用性能优化和安全防护一直有着高度的关注。在我职业生涯的某个阶段,我意识到仅仅停留在“如何开发”的层面是不够的,理解“应用是如何运行”以及“如何保护应用”同样重要。《iOS应用逆向工程 第2版》这本书,无疑为我打开了新的视野。我尤其关注书中关于Swift语言在逆向工程中的应用。Swift作为现代iOS开发的主力军,其底层实现和Objective-C有所不同,了解Swift的内存管理、协议和泛型的实现原理,对于进行更深层次的逆向分析至关重要。这本书似乎在这方面提供了非常深入的讲解,这正是我急切需要的。另外,书中对于越狱环境和非越狱环境下的逆向分析的策略区分,也显示了作者对实际场景的深刻理解。我相信,通过这本书的学习,我不仅能提升自己在安全领域的知识储备,还能反哺于我日常的开发工作,让我能够写出更健壮、更安全的iOS应用。这本书的深度和广度,让我对iOS底层技术有了更系统、更全面的认识,它绝对是我书架上不可或缺的一本参考书。
入门好书,由这本书从跨进了逆向的大门。
干货很多,iOS逆向工程非常好的入门书籍。
打开了新世界的大门,拿到app就可以看到各种功能是怎么实现的
打开了新世界的大门,拿到app就可以看到各种功能是怎么实现的
iOS 逆向入门经典书籍。