全球首本讲解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等。
本书的前六章侧重于理论的介绍,但又不局限于理论,几乎每章都有至少一个小例子来帮助读者理解相关的理论。后面的几章侧重于实践,并且使用了一些大家耳熟能详的App作为例子,以此来降低读者的陌生感,可见作者用心之良苦。
逆向工程对实践性要求非常高,因此学会与没学会的标准只有一个,那就是能不能抛开书本,使用与书中相同或者不同的方法,实现出相同的效果。大家在实践的过程中必然会遇到困难,可能会感觉学不下去了,但是希望大家在这时绝不要放弃,有句话叫“念念不忘,必有回响”,在感觉自己学不会时,可以先把这件事情放一放,但是不要忘记,过段时间再继续。经过几次这样的迭代后,相信你会掌握iOS逆向工程相关的理论与技巧。
——Proteas 独立iOS研究员
每一个iOS开发者都应了解的逆向知识都在这里了。这本书详细地介绍了常用的静态分析手法以及实用的动态分析技巧。不但可以帮助逆向新手快速上手,同时也能激发iOS开发熟手对应用安全的思考,把主动防御的思想渗透到项目开发中。
——念茜 支付宝iOS开发工程师
本书非常适合有一定iOS开发经验的读者,一步一步引导你走进逆向工程的大门。
各种实用工具的讲解,让你倦意顿失;手把手的实践,让你意犹未尽。
现在iOS越狱进入常态化,越狱开发的势头很猛,学会了逆向开发,多一种选择,对于普通开发也是受益颇多。
——沈悦 独立iOS开发者
目 录
推荐序一
推荐序二
第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
第1章
iOS逆向工程简介
虽然可口可乐的配方是高度机密,但还是有些公司可以调制出跟可乐几乎没有差别的味道。虽然我们拿不到别人App的源码和文档,但仍可以通过逆向工程来一窥究竟。
1.1 iOS逆向工程的要求
iOS逆向工程指的是在软件层面上进行逆向分析的一个过程。读者如果想要具备较强的iOS逆向工程能力,最好能非常熟悉iOS设备的硬件构成、iOS系统的运行原理,还要具备丰富的iOS开发经验。如果你拿到任意一个App之后能够大致推断出它的项目规模和使用的技术,比如它的MVC(Model-View-Controller,请Google“iOS MVC”)模型是怎么建立的,引用了哪些 framework和经典的开源代码,说明你的iOS逆向工程能力已经不容小觑了。
这要求高吗?好像确实有点高!不过,这些条件都是充分非必要的。如果你目前还不具备这些充分条件,那么一定要满足两个必要条件:强烈的好奇心和锲而不舍的精神。因为在iOS逆向工程中,好奇心会驱动你去研究经典的App,而在研究的过程中一定会遇到一系列的困难和障碍,但你又不可能对任何问题都胸有成竹,所以这时就需要有锲而不舍的精神来支撑你克服一个又一个困难。请相信,在投入大量精力去编写代码、调试程序、分析逻辑之后,你会在不断的试验和错误中感受到逆向工程的艺术之美,你的个人能力也会得到质的提升。
1.2 iOS应用逆向工程的作用
打个比喻,iOS逆向工程就像一杆长矛,专门刺破App看似安全的防护盾。有趣的是,很多制作App的公司还没有意识到这样一杆长矛的存在,固步自封地以为自己的盾坚不可摧。
对于微信和WhatsApp之类的IM应用,交流的信息是它们的核心;对于银行、支付、电商类的软件,交易数据和客户信息是它们的核心。所有的核心数据都是需要重点保护的,于是,开发人员通过反调试、数据加密、代码混淆等各种手段重重保护自己App,为的就是增加逆向工程的难度,避免类似的安全问题影响用户体验。
可是目前App防护所用到的技术跟iOS逆向工程所使用的技术根本就不是同一个维度的。一般的App防护,感觉就像是一个城堡,将App的MVC布置在城堡内部,外围圈上厚厚的城墙,看上去易守难攻,就像图1-1所示的这样。
推荐序一
前一段时间跟吴航在微博上私信聊天,他说正在写一本iOS方面的图书,我让他书出来的时候送一本给我。之后他在私信上跟我说书写完了,让我给写个序,我当即表示“压力山大”,但还是欣然答应了。
我认识吴航是在2011年9月,当时安全管家在找iOS开发高手,吴航作为我们安全管家iOS开发组的第一个工程师进来了,他和我们从零开始搭建iOS团队,并着手安全管家越狱版的开发。到了2012年年中,我认识到iOS自身的安全性非常好,在非越狱的iOS上我们能做的关于安全的事情并不多,而越狱行为本身就是一个最大的安全风险,是用户主动选择的结果,跟我们自身的安全理念不符,因此无须投入太多关注,恰好吴航本人也想出去做自己的事情,于是我支持了他的决定。
在那大半年的接触中,我发现吴航是个难得的技术人才,在技术的钻研上有股子狠劲,拥有丰富的开发实战经验,又善于利用各种工具解决问题,因此在他带团队的时候,评估出来的开发进度基本上都能达成。我印象深刻的有两件事,第一件是在开发越狱版安全管家时,由于这方面官方公开的资料几乎没有,很多涉及系统底层的开发,需要自己摸着石头过河,并得反复尝试。当时我们制定了一个比较紧的开发周期,希望在较短的时间内开发出越狱版安全管家的原型。吴航的压力不小,他接连几个月都在研究系统底层,向各路高人请教,通过Google找寻国外网站上的资料,没日没夜地想办法,后来终于在既定的时间内完成,这让我看到了吴航不仅不惧困难,而且敢于负责任。另一件事是在开发App Store版安全管家时,有个版本在我的手机上在不同页面间快速切换时会有极小的概率导致安全管家崩溃,我就反馈给了吴航。虽然只是小概率事件,但他亲自反复高强度测试,细致地排查代码,最终揪出了导致这个问题的内存指针Bug,这足见其严谨的技术态度和对质量高标准的追求。
虽然我不做开发很多年了,但是至今仍忘不了年轻时作为一个工程师,非常渴望与更高水平的人交流,希望聆听高手们实战经验分享的情景。吴航愿意把他的经验总结成书,是广大iOS开发者的福音,这本书能够带给大家实实在在的干货,让大家都能在技术的道路再攀高峰。
赵岗
安全管家创始人
推荐序二
In our lives, we pay very little attention to things that work. Everything we interact with hides a fractal of complexity—hundreds of smaller components, all of which serve a vital role, each disappearing into its destined form and function. Every day, millions of people take to the streets with phones in their hands, and every day hardware, firmware, and software blend into one contiguous mass of games, photographs, phone calls, and text messages.
It holds, then, that each component retains leverage over the others. Hardware owns firmware, firmware loads and reins in software, and software in turn directs hardware. If you could take control of one of them, could you influence a device to enact your own desires?
iOS 8 App Reverse Engineering provides a unique view inside the software running on iOS?, the operating system that powers the Apple iPhone? and iPad?. Within, you will learn what makes up application code and how each component fits into the software ecosystem at large. You will explore the hidden second life your phone leads, wherein it is a full-fledged computer and software development platform and there is no practical limit to its functionality.
So, young developer, break free of restricted software and find out exactly what makes your iPhone tick!
(在生活中,我们经常会忽略许多习以为常的事物。事实上,那些我们每天都与之打交道的东西,往往都蕴含了一种“复杂”的美感——它们由成百上千的微小组件构成,各个微小组件各司其职,在各自的岗位上发挥着不可替代的关键作用。现代生活中,智能手机已经成了我们每天必不可少的工具,通过硬件、软件和固件协同合作,它为我们带来了好玩的游戏、有趣的照片,以及便利的沟通渠道——电话和短信。
在一个巴掌大的手机里,各个组件之间的关系错综复杂,互相影响。硬件为固件的运行提供支撑平台,固件掌管软件,而软件又回过头来调度硬件。如果你能控制它们之中的哪怕一个,不就可以让手机听命于你了吗?但App Store的插手,又为你对它们的控制加上了重重阻力。
本书从独特的角度剖析iOS应用,你会从比App Store App更低一级的深度去了解软件的各个组件在构造整个软件时起到的作用,你会由此发现手机的“里世界”——它的能力远不止App Store所许可的那样有限,确切地说,它是一台功能齐全的计算机,在它的“里世界”里,一切皆有可能。
年轻的开发者,从这里开始打破App Store的限制,重新认识真正的iPhone吧!)
Dustin L. Howett
iPhone Tweak 开发者
第2版序
转眼,本书第1版面世已经快1年了,在这一年里,因为有大家的认可与推广,本书得到了广泛关注。与此同时,iOS逆向工程也在国内iOS开发者圈子里“漫延”开来,并达到了前所未有的高度,正是因为大家的努力,才使得该技术得到发展,而我们作者团队也贡献了一点力量,甚感欣慰!
随着盘古、太极等国内越狱团队的横空出世,以及各种第三方市场的蓬勃发展,iOS技术层面的较量已经从App开发转向底层研究;随着WireLurker等病毒的出现,一些深藏不露的安全问题也开始浮出水面,苹果构建的封闭系统正在出现一条条裂缝。不管是进攻还是防守,都离不开iOS逆向工程技术的使用。在可以预见的未来,苹果将进入恶意软件重度防御时
代,iOS逆向工程的应用一定会越来越广泛,让我们拭目以待。
自本书第1版上市后,反响一直不错,京东等各大网店的好评率高达95%以上。随着iOS 8的发布,我们清楚地意识到第1版的内容已经不再适合最新的iOS 8。同时根据一年多以来跟大家不断的沟通和交流,也意识到第1版存在缺憾和不足,例如讲解不够细致,术多道少等,影响了书的可读性。因此,在即将推出全新升级的《iOS应用逆向工程》里,不但全面支持iOS 8,还大幅更新了章节内容,涵盖更多细节,配备了更多的例子,增加了“道”的分量,比第1版的逻辑性更强,更易读了。在升级版中,我们尝试从抽象的逆向工程中抽离出一个通用的方法论,试图传递给大家一种逆向工程的思想,而不仅仅是工具的使用。
本书第1版上市之后,我曾把书的目录和内容框架发布到国际iOS越狱社区上,得到了非常正面的反馈,包括Cydia的作者saurik、OSX著名研究员fG!、Theos作者DHowett等国际一线开发者均对本书表示了浓厚的兴趣,这也让我萌生了让该书走向国际的想法。在整理这一版时,我与编辑沟通了该想法,没想到还真促成了此事。国际版将由美国CRC出版社在全球出版发行,由8位国外知名研究员(5位美国籍、1位加拿大籍、1位阿根廷籍、1位丹麦籍)审核,全球iOS逆向工程社区对国际版寄予了厚望。在第1版的前言里,航哥曾提到我夸下的海口:“弟的目标远大,要玩就朝着国际一线大牛的目标去!”虽然离这个目标还差得很远,但我已经在朝这个目标努力迈进了,不是么?
前 言
为什么要写这本书
两年前我正式从传统网络设备行业转行进入移动互联网行业,当时正是移动应用开发市场最火爆的时候,创业公司如雨后春笋般的成立,尤其社交类App更是大受追捧,只要有一个不错的构想就可能拿到千万级投资,高价挖人组队的信息更是让人眼花缭乱。那时我已经开发了几个颇具难度的企业应用类App,对于那些轻量级的普通社交App不是太看得上,想着要玩点比较酷的技术,机缘巧合进入了安全管家(北京安管佳科技有限公司),从零开始搭建iOS团队,负责包括越狱方向在内的iOS开发。
其实iOS越狱开发的基础就是iOS逆向工程,那个时候我并没有这方面的经验,面向的是一个完全未知的领域,不过好在有Google,国内国外的信息多少还是能够搜到点,而且对于iOS开发者,越狱开发和逆向工程并不是一个完全隔离的世界,虽然被分享出来的都是零零散散甚至重复度很高的知识,但是只要投入大量精力,把知识归纳总结,慢慢可以整理出一幅完整的图谱。
然而独自一人学习的过程是孤独的,尤其是遇见困难和问题无人交流,让人一筹莫展。每次一个人扛下所有问题的时候,总是感叹:要是有一个水平不错的交流者该是多么幸福?虽然也可以给Ryan Petrich等一线大牛发邮件请教,但很多在我们看来当时解决不了的难题在这类高手眼中很可能就是个低级问题,不苦心钻研一番根本不好意思去问。这个阶段大概持续了有大半年,直到2012年在微博上遇到本书的另一作者snakeninny,那时他还是一个面临毕业的研究生,整天“不务正业”地研究iOS底层,而且研究得还相当有深度。我曾和他提过:“你看,有多少人都投入到App领域捞钱去了,你咋不去呢?”他说:“弟的目标远大,要玩就朝着国际一线大牛的目标去!”小兄弟,你够狠!
不过,多数时候我们都是自己在折腾,只是偶尔在网上交流一下问题及解决方法,但往往能碰撞出一些有价值的内容。在一起合写本书之前,我们曾经合作逆向分析过陌陌,做了一个插件用于在陌陌iOS版上把美女的位置标注在地图上。当然我们都是善意的开发者,主动将这个漏洞告诉了陌陌,他们很快就修复了。这次,我们再次合作,将iOS逆向工程方向的知识整理出版,呈现给各位读者。
在接触越狱开发、逆向工程的这些年,个人感觉最大的收获就是看待App时,完全以一种庖丁解牛的眼光去审视:App如何构成、性能如何,可以直接反映出开发团队水平高低。这些经验知识不仅可用于越狱开发,也适用于传统的App开发,至于带来的影响,有正有负吧!我们不能因为苹果不提倡越狱就否定这个领域的存在,盲目地相信本书曝光的安全问题不存在不过是掩耳盗铃罢了。
有经验的开发者都明白,知识掌握得越深,越会接触到底层技术。比如sandbox保护机制具体体现在哪些方面?runtime只用来研究理论知识是不是有点大材小用了?
在Android领域,底层技术已经被扩散开,而在iOS领域,这个方向展现出来的内容还只是冰山一角。虽然国外也有几本iOS安全方向的书籍,比如《Hacking and Securing iOS Applications》、《iOS Hacker’s Handbook》,但是内容太难,绝大多数人根本读不懂,即使我们这些有一定经验的开发者,读这些书也非常吃力,效果不好。
阳春白雪不为我们这些喜欢实践的技术宅所好,那么来点下里巴人的,不必遮遮掩掩,直接全面展开这些知识岂不是更痛快?于是就有了我们这本书,书中的内容以概念、工具、理论、实战的形式全面、系统地展开知识点,由浅入深,图文并茂,带着读者一步步地探索App的内在。我们不会像一些技术博客那样貌似很高深地独立分析某一片段的代码,也不纠结“茴”字有几种写法,而是尽我们所能将一个完整的知识体系呈现给读者,提供一整套iOS应用逆向工程的方法论,相信读者一定会有所收获。
近些年,国内投入在越狱iOS这个方向的人越来越多,但都比较低调,他们开发出的越狱工具、App助手、Cydia插件影响着整个iOS的发展。他们积累的技术非我们这些散兵游勇所能及,但我们更愿意分享这些知识,希望能够抛砖引玉。
读者对象
本书主要面向以下读者:
iOS狂热爱好者。
中高级iOS开发人员。他们在掌握了App开发之后对iOS有更深的渴求。
架构师。在逆向App的整个过程中,架构师能学习那些优秀App的架构设计,以这种方式博采众长,提高自己的架构设计能力。
在别的系统上从事逆向工程,想要转向iOS逆向工程的工程师。
如何阅读本书
本书将分为四大部分,分别是概念、工具、理论和实战。前三部分介绍iOS逆向工程这个领域的背景、知识体系,以及相应的工具集、理论知识;第四部分则以4个具体案例将前面的知识以实战的方式展开,让读者可以实践验证前面学到的知识,加深对iOS逆向工程的理解。
如果读者不具备iOS逆向工程经验,建议还是从头开始按顺序阅读,而不要直接跨越到第四部分去模拟实战。虽然实战的成果很炫,但知其然而不知其所以然也没意思,对不对?
勘误和支持
由于作者的水平有限,编写的时间也很仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正,欢迎访问本书的官方论坛,全球的iOS逆向工程师都在这里聚集,你的问题应该会得到满意的解答。如果你有更多的宝贵意见,也欢迎你通过微博@iOS应用逆向工程或官方论坛与我们联系,我们很期待能够听到你们的真挚反馈。
致谢
首先要感谢evad3rs、盘古、太极、saurik等顶级团队与高手,他们奠定了越狱iOS的基石;还要感谢DHowett,是他提供了Theos这个强大的开发工具使我得以迈进iOS逆向工程的大门。
感谢安全管家,为我进入iOS逆向工程领域提供了一个充分发挥的环境,虽然我早已离开,但希望它发展得更好。
感谢微博上每一位热心的朋友——唐巧_boy、卢明华、你在瓦西里、isdada、Jagie、onevcat、戴铭、费西FISH、xuzhanji、Life无法Debug、移动开发小冉、HorseLuke、网络蝎子、hongjiang_wang、月之舞狼、StayNStay、bluesea哈哈哈、郑州IOS、青年土豆的烦恼、木土吉吉,以及这个仓促写就的名单之外的更多朋友,感谢你们对我的支持和鼓励。特地感谢唐巧_boy的引荐,他的热心帮助促成了本书的出版。
感谢机械工业出版社华章公司的编辑杨绣国老师,感谢她的魄力和远见,在这三个月的时间里始终支持我的写作,她的指点和帮助引导我们顺利完成全部书稿。
谨以此书献给我最亲爱的家人,以及众多热爱iOS开发的朋友们。
吴航(hangcom2010)
翻开《iOS应用逆向工程 第2版》,我仿佛踏入了一个充满挑战与智慧的地下王国。作者以其深厚的功力,为我打开了一扇通往iOS内部世界的大门。这本书的叙述方式非常独特,它不像传统的技术书籍那样枯燥乏味,而是充满了故事性和探索性。作者通过模拟各种场景,引导读者一步步地去发现问题、分析问题、解决问题。 例如,在讲解Objective-C的运行时机制时,作者并没有直接给出API列表,而是通过一个又一个生动的小例子,让你亲身感受消息的传递,方法的调用,对象的创建。你会发现,原来那些看似理所当然的功能,背后却有着如此精妙的设计。书中对Mach-O文件格式的解析也格外精彩,作者并没有简单地介绍各个段落的功能,而是通过实际的Mach-O文件,让你学会如何使用工具去剖析它,找出隐藏在二进制文件中的秘密。这部分内容,对于理解iOS应用的打包、加载以及动态链接,有着至关重要的作用。
评分不得不说,这本书的深度和广度都超出了我的预期。它不仅仅是一本关于“如何逆向”的书,更是一本关于“为什么这么做”以及“如何做得更好”的书。作者在分析每一个技术点时,都会深入探讨其背后的设计理念、优缺点以及在实际应用中的影响。 我特别喜欢书中关于代码混淆和反调试的章节。作者详细介绍了各种混淆技术的原理,以及如何通过逆向工程来对抗它们。这让我明白了,安全防护是一个不断博弈的过程,逆向工程是其中不可或缺的一环。而关于反调试的讲解,更是让我对如何保护自己应用的运行安全有了更深的认识。书中还提供了一些关于动态调试和静态分析的进阶技巧,这些都是我之前从未接触过的,为我打开了新的学习领域。
评分这本书给我最大的感受就是其“实战性”和“前瞻性”的完美结合。作者不仅仅是罗列技术,更注重于如何将这些技术应用到实际问题中去。例如,书中关于App Store应用下载、应用内支付、数据加密与解密等常见场景的逆向分析,都极具参考价值。通过这些案例,我不仅学会了如何去分析一个完整的应用程序,还了解了各种商业软件和游戏背后可能存在的安全漏洞和实现机制。 更让我眼前一亮的是,作者在书中也对iOS的一些高级主题进行了探讨,比如越狱环境下的逆向工程,以及一些更底层的内核层面分析。虽然这些内容可能对初学者来说有些难度,但对于想要深入钻研iOS系统底层的读者来说,无疑是巨大的财富。作者能够将如此复杂的技术点讲解得如此清晰,并且提供了必要的工具和思路,着实不易。这本书就像一本武林秘籍,让我得以窥见iOS世界的“黑暗面”,也让我对如何构建更坚固的“堡垒”有了更深的理解。
评分这本《iOS应用逆向工程 第2版》真是太让人惊喜了!作为一名对iOS底层原理和安全防护一直充满好奇的开发者,我一直在寻找一本能够深入浅出、全面系统讲解逆向工程的书籍。终于,我找到了它!这本书的出现,简直就是我学习路上的指路明灯。 从拿到书的第一页开始,我就被作者扎实的功底和清晰的逻辑深深吸引。书中并没有一上来就讲那些枯燥乏味的汇编指令或者复杂的调试技巧,而是循序渐进地从iOS应用的基本结构、Mach-O文件格式、Objective-C运行时机制讲起。这使得我这个之前对逆向工程了解不多的新手,也能轻松跟上作者的思路。作者通过大量的真实案例,详细解析了Objective-C的消息传递机制、方法调用流程,以及类、对象、方法之间的内在联系。特别是关于Method Swizzling和Hooking的讲解,让我对如何在运行时动态地修改和拦截方法有了更深刻的理解。书中提供的代码示例都非常精炼,易于理解和实践,这对于我这种喜欢动手操作的读者来说,简直是福音。
评分这本书的价值远不止于对Objective-C的深入剖析,它更将目光投向了Swift语言及其特性。在如今Swift开发日益普及的背景下,能够有一本深入讲解Swift应用逆向工程的书籍,实属难得。作者并没有回避Swift带来的挑战,而是巧妙地将Objective-C的逆向思维迁移到Swift上,并详细阐述了Swift的类型系统、泛型、协议以及Runtime的差异。我尤其欣赏的是,书中对Swift闭包、结构体、类等不同数据类型的内存布局和访问方式进行了细致的分析。这部分内容对于理解Swift应用的性能优化和安全加固至关重要。同时,作者还介绍了如何使用Swift特有的工具和技术来进行逆向分析,例如SIL(Swift Intermediate Language)的分析,这为我打开了一个全新的视角。 书中对于安全方面的探讨也十分到位。从应用加固的常见手段,到代码混淆、反调试、反重力感应等技术的原理分析,再到如何利用逆向工程的手段来绕过或检测这些安全防护,都做了详尽的阐述。作者并没有停留在理论层面,而是结合实际场景,指导读者如何利用Frida、MachOView、IDA Pro等强大的逆向工具,一步步地破解和分析复杂的安全机制。读完这部分,我感觉自己对iOS应用的安全边界有了更清晰的认识,也为我后续开发更安全的应用提供了宝贵的经验。
评分图书活动非常给力。。
评分这本书是逆向界的葵花宝典,非常有用
评分程序员的道路,越走越远,还没看,应该很不错
评分好评
评分入门必备,前置知识要求少
评分非常好,很好,太好了
评分j哈哈纠结啊纠结啊我
评分书的质量很好,希望对学习知识有帮助
评分iOS应用逆向工程 第2版
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.teaonline.club All Rights Reserved. 图书大百科 版权所有