- 定价:¥69.00
- POD价:¥69.00
- 评分:
(已有7条评价)
- 电子书:iOS应用逆向工程:分析与实战[按需印刷]
- 促销活动:
- 我要买:
- ·如此书原封面缺失,印刷将采用出版社授权的新封面;
- ·如电子文件出现问题,可能延长印制周期,我们将提前与您沟通
基本信息

【插图】

编辑推荐
国内一本讲解iOS应用逆向工程的实战手册,作者毫无保留地分享了数年来在iOS逆向领域的经验。
内容系统深入,实战性强,从iOS系统架构、文件类型等逆向理论出发,通过多个实用案例,结合Class-dump、Theos、Cycript、Reveal、IDA、GDB等常用逆向工具阐述了对iOS应用进行逆向分析的思路、方法和技巧。
内容简介
计算机书籍
《iOS应用逆向工程:分析与实战》是iOS应用逆向工程方面的权威著作,三位作者都是iOS领域内的专家,拥有扎实的理论知识和丰富的实践经验。本书内容以工具+代码的形式全面、系统地展开知识点,由浅入深,图文并茂地带着读者一步步探索常规iOS App之外的世界。
《iOS应用逆向工程:分析与实战》分为四大部分,分别是概念、工具、理论和实战。前三部分介绍iOS逆向分析领域的背景、知识体系,以及相应的工具集、理论知识;第四部分则通过4个实际案例来将前面的知识以实战的方式展开。第一部分为概念篇,简单介绍iOS逆向分析的概念以及iOS平台系统架构。第二部分为工具篇,介绍一系列基于Mac和iOS平台的配套工具,并且重点讲解其中的class-dump、Theos、Reveal、IDA、GDB等5个工具的使用方法,前3个侧重于使用,后2个侧重于分析。第三部分为理论篇,主要讲述iOS逆向/越狱方向的进阶必备理论知识。第四部分为实战篇,通过对3个App Store App及1个系统App进行逆向分析的实战操作,让读者能够了解并同步实践已掌握的知识。
作译者
吴航,十余年程序开发经验的资深码农,历经方正、NEC、Juniper等国内国外知名IT企业,2011年进入iOS领域,专注于iOSapp/逆向等方向的开发,主要作品有安全管家、有康医生、知乎月刊HD等。
刘瑾,北京电子科技学院计算机科学与技术系讲师,教课之余主要从事移动客户端的安全应用程序设计和嵌入式应用程序开发研究,参与编著及翻译多本相关教材,承担过多个项目的研发工作,多次获得各项教学科研奖项。
目录
推荐序一
推荐序二
自序
前言
第一部分 概念篇
第1 章 iOS 逆向工程简介 2
1.1 iOS 软件逆向工程的要求 2
1.2 iOS 软件逆向工程的作用 2
1.2.1 与安全相关的iOS 逆向工程 4
1.2.2 与开发相关的iOS 逆向工程 5
1.3 iOS 软件逆向工程的一般过程 6
1.3.1 系统分析 7
1.3.2 代码分析 7
1.4 iOS 软件逆向工程用到的工具 8
1.4.1 监测工具 8
1.4.2 开发工具 9
1.4.3 反编译器 9
1.4.4 调试器 10
1.5 小结 11
前言
两年前我正式从传统网络设备行业转行进入移动互联网行业,当时正是移动应用开发市场最火爆的时候,创业公司如雨后春笋般成立,社交类App更是大受追捧,只要有一个不错的构想就可能拿到千万级投资,高价挖人组队的信息更是让人眼花缭乱。那时我已经开发了几个颇具难度的企业应用类App,对于那些轻量级的普通社交App不是太看得上,想着要玩点比较酷的技术,机缘巧合进入了安全管家(北京安管佳科技有限公司),从零开始组建iOS团队,负责包括越狱方向在内的iOS开发。
其实iOS越狱开发就是基于iOS的逆向分析工程,那个时候我并没有这方面的经验,面向的是一个完全未知的领域,不过好在有Google,国内国外的信息多少还是能够搜到点,而且对于iOS开发者,越狱开发/逆向分析并不是一个完全隔离的世界,虽然被分享出来的都是些零零散散甚至重复度很高的知识,但是只要投入大量精力,把知识归纳总结,慢慢也就整理出一幅完整的图谱。
然而独自一人学习的过程是孤独的,尤其是遇见困难和问题无人交流,让人一筹莫展。每次一个人扛下所有问题的时候,总是感叹:要是有一个水平不错的交流者该是多么幸福?虽然也可以给Ryan Petrich(@rpetrich)等一线大牛发邮件请教,但很多在我们看来当时解决不了的难题在这类高手眼中可能就是个低级问题,不苦心钻研一番根本不好意思去问。这个阶段大概持续了有大半年,直到2012年在微博上遇到本书的另一作者snakeninny,那时他还是一个面临毕业的研究生,整天“不务正业”地研究iOS底层,而且研究得还相当有深度。我曾和他提过:“你看,有多少人都投入到App领域捞钱去了,你咋不去呢?”他说: “小弟的目标远大,要玩就朝着国际一线大牛的目标去!”小兄弟,你够狠!
不过,多数时候我们都是自己在折腾,虽然偶尔在网上交流一下问题及解决方法,但往往能分享得到一些有价值的内容。在一起合写本书之前,我们曾经合作逆向分析过陌陌,做了一个插件用于在陌陌iPhone版上把美女的位置标注在地图上,当然我们都是善意的开发者,主动将这个漏洞告诉了陌陌,他们很快就修复了。这次,我们再次合作,将逆向分析这个方向的知识整理出版,呈现给各位读者。
在接触越狱开发/逆向分析的这两年,个人感觉最大的收获就是看待App时,完全以一种庖丁解牛的眼光去审视:App如何构成、性能如何间接反映出开发团队水平高低。这些经验知识不仅可用于越狱开发,也可用于传统的App开发,至于带来的影响,有正有负吧。我们不能因为所谓正统的iOS平台不提倡越狱就否定这个领域的存在,盲目相信那些安全问题不存在不过是掩耳盗铃。
有经验的开发者都明白,知识掌握得越深,越会接触到底层技术。比如sandbox保护机制之外到底有什么?runtime只用来研究理论知识是不是有点大材小用了?
在Android领域,底层技术已经被扩散开,而在iOS领域,这个方向展现出来的内容还只是冰山一角。虽然国外也有几本iOS安全方向的书籍,比如《Hacking and Securing iOS Applications》、《iOS Hacker’s Handbook》,但是内容太难,多数人读不出所以然,不适合中国国情,即使我们这些有一定经验的开发者,读这些书也像是在读大学教科书。
阳春白雪不为我们这些喜欢实践的技术宅所好,那么就来点下里巴人的,不必遮遮掩掩,直接全面展开这些知识岂不是更痛快?于是就有了我们这本书,书中的内容以工具+代码的形式全面、系统地展开知识点,由浅入深,图文并茂,旨在带着读者一步步地探索常规iOS App之外的世界。我们不会像一些技术博客那样貌似很高深的独立分析某一片段的代码,而是尽我们所能将一个完整的知识体系呈现给读者,相信读者一定会有所收获。
国内投入在越狱开发这个方向的人并不算少,但都比较低调,而且多集中在大公司中,比如腾讯、360、91、WeiPhone,他们积累的技术非我们这些散兵游勇所能及,不过我们更愿意先将这些知识分享出来,希望能够抛砖引玉。
读者对象
本书主要面向以下读者:
对iOS系统有浓厚兴趣的读者;
中高级iOS开发人员,他们在掌握了普通App开发之后对iOS有更深的渴求;
架构师,因为在逆向App的整个过程中,有心的技术人员能看到那些经典App在结构设计上的经验、优势,并博采众长,有助于整体架构设计水平的提高;
在别的系统上从事逆向工程,想要转向iOS系统的逆向工程师。
如何阅读本书
本书将分为四大部分,分别是概念、工具、理论和实战。前三部分介绍iOS逆向分析这个领域的背景、知识体系,以及相应的工具集、理论知识;第四部分则具体以4个实际案例将前面的知识以实战的方式展开,让读者可以实践验证前面学到的知识并进一步更扎实地掌握相应的知识。
如果读者不具备一定的逆向分析经验,建议还是从头开始按顺序阅读,而不要直接跨越到第四部分去模拟实战。虽然实战的成果似乎比较炫,但弄个半懂不懂也没意思对不对?
第一部分为概念篇,将简单介绍iOS逆向分析的概念以及iOS平台系统架构。
序言
前一段时间跟吴航在微博上私信聊天,他说正在写一本iOS方面的书,我让他等书出来后送一本给我。前两天他发私信告诉我书写完了,让我给写个序,我当即表示“压力山大”,但还是欣然答应了。
我认识吴航是在2011年9月,当时安全管家在找iOS开发高手。吴航作为我们安全管家iOS开发组的第一个工程师进来了,从零开始搭建iOS团队,负责包括安全管家越狱方向在内的iOS开发。到了2012年年中,我认识到iOS自身的安全性非常好,在非越狱的iOS上我们能做的关于安全的事情并不多,而越狱行为本身就是一个最大的安全风险,是用户主动选择的结果,跟我们自身的安全理念不符,因此无须投入太多关注,恰好吴航本人也想出去做自己的事情,就支持了他的决定。
在那大半年的接触中,我发现吴航是个难得的技术人才,在技术的专研上有股子狠劲,拥有丰富的开发实战经验,又善于利用各种工具解决问题,因此在他带团队的时候,评估出来的开发进度基本上都能达成。我印象深刻的有两件事,第一件是开发越狱版安全管家。这方面官方公开的资料几乎没有,涉及很多系统底层,因此需要自己摸着石头过河并反复尝试。当时我们制定了一个比较紧的开发周期,希望在较短的时间内开发出越狱版安全管家的原型。吴航的压力不小,他接连几个月都在研究系统底层,向各路高人请教,通过Google找寻国外网站上的资料,没日没夜地想办法,后来终于在既定的时间内完成,让我看到了吴航不惧困难、敢于负责任的劲头。另一件事是开发iOS版安全管家,有个版本在我的手机上在不同页面间快速切换时有极小的概率会导致安全管家崩溃,我就反馈给吴航。虽然只是个小概率事件,但他亲自反复高强度测试,细致地排查代码,最终揪出了导致这个问题的一个内存指针bug,足见其严谨的技术态度和对质量高标准的追求。
我虽然不做开发很多年了,但是至今不忘年轻时作为一个工程师,非常渴望与更高水平的人交流,希望聆听高手们的实战经验分享。吴航愿意把他的经验总结成书,是广大iOS开发者的福音,这本书能够带给大家实实在在的干货,让大家都能在技术的道路上再攀高峰。
赵岗
安全管家创始人
推 荐 序 二
在生活中,我们经常会忽略许多习以为常的事物。事实上,那些我们每天都与之打交道的东西,往往都蕴含了一种“复杂”的美感:它们由成百上千的微小组件构成,各个微小组件各司其职,在各自的岗位上发挥着不可替代的关键作用。现代生活中,智能手机已经成了我们每天必不可少的工具,通过硬件、软件和固件协同合作,它为我们带来了好玩的游戏、有趣的照片以及便利的沟通渠道——电话和短信。
在一个巴掌大的手机里,各个组件之间的关系错综复杂,互相影响。硬件为固件的运行提供支撑平台,固件掌管软件,而软件又回过头来调度硬件。如果你能控制它们之中的哪怕一个,不就可以让手机听命于你了吗?但App Store的插手,给你对它们的控制加上了重重阻力。
本书从独特的角度剖析iOS应用,你会从比App Store App更低一级的深度去了解软件的各个组件在构造整个软件时起到的作用。你会由此发现你手机的“里世界”,它的能力远不止App Store所许可的那样有限,确切地说,它是一台功能齐全的计算机,在它的“里世界”里,一切皆有可能。
少年,从这里开始打破App Store的限制,重新认识真正的iPhone吧!
Dustin L. Howett
iPhone tweak 开发者
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 App Reverse Engineering: Analysis and Practice 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 phone tick!
Dustin L. Howett
iPhone Tweak Developer
书摘
概念篇
软件的逆向工程指的是通过分析一个程序或系统的功能、结构或行为,将它的技术实现或设计细节推导出来的过程。当我们因为工作需要,或是对一个软件的功能很感兴趣,却又拿不到它的源代码时,往往可以通过逆向工程的方式对它进行分析。
对于iOS开发者来说,运行在iOS平台上的各种软件是我们知晓的最复杂且超奇妙的虚拟物品之一,它们精巧而细致,新颖且创意十足。作为开发人员,在使用这许多经典的App的同时,除了会称赞App的实现效果之外,也会经常思考:它们的架构是如何搭建的?它们的运行机制又具体是什么样的?
第1章
iOS逆向工程简介
虽然从理论上来说iOS App是一个运行于沙箱(sandbox)中的程序,但并不表示我们就对它束手无策,事实上,可以通过逆向工程来一窥其究竟。接下来,就引入iOS软件逆向工程的概念。
1.1iOS软件逆向工程的要求
iOS软件逆向工程指的是在软件层面上进行逆向分析的一个过程。读者如果想要达到对iOS软件较强的逆向分析能力,最好能非常熟悉iOS设备的硬件构成、iOS系统的运行原理,还要具备丰富的iOS开发经验。比如:拿到一个App之后能够清晰地推断出这个App使用的技术,包括引用了哪些framework、哪些经典的第三方代码,以及整个App工程大致的文件个数、大致的代码行数,另外,还要想象一下如果由自己来组织设计开发,需要投入的人员、时间和精力等。
这要求高吗?其实真的不算高!不过,这些条件都是充分非必要的。如果你目前还不具备这些技术条件,那么有两个必要条件则一定要满足:强烈的好奇心和锲而不舍的精神。因为在iOS软件逆向工程中,好奇心会驱动你去钻研经典的App,而在钻研的过程中会遇到一系列的困难和障碍,各种各样的技术坑,别人埋的、自己挖的,此时就需要锲而不舍的精神来支撑你一步步向前走。但是请相信,在投入大量精力去编写代码、调试程序、分析逻辑之后,你会在不断的试验和错误中感受到逆向工程的艺术之美。
1.2iOS软件逆向工程的作用
打个比喻,iOS逆向工程就像一杆长矛,专门用于刺破目标程序本以为安全的保护盾,而且还是从想象不到的角度来刺破。
对于微信、陌陌、WhatsApp之类的IM软件,交流的信息是它们的核心;对于银行、交易支付、电商类的软件,交易和客户信息是它们的核心。所有的核心数据都是需要重点保护的,于是,数据库加密、网络连接加密、云存储等,开发人员通过各种手段重重保护,为的就是让使用者能够高枕无忧。
可是iOS逆向工程对这些常规App的攻击不是来自同一个维度!这些攻击可用一个词来定义:维度攻击(“维度攻击”的概念来自科幻小说《三体》,在此向《三体》致敬)。
从维度的角度来解释,我们看待常规App的感觉更像是将App的所有数据、UI、逻辑内容都平展地铺开在一张二维的大纸上,外围圈上厚厚的城墙。它的平面图概念如同图1-1所示的谷歌地图一般。
图1-1飞到二维城市的上空来俯瞰整座城市
但是当我们跳跃到城墙之外,在三维的天空中俯瞰这个App的二维城堡,这个城堡的内部结构几乎完全开放在眼前,包括所有的Objective-C函数定义、所有的接口数据、甚至所有的函数内执行代码。城墙的防护意义已经荡然无存!此时限制我们的只是这个二维平面城堡到底有多大,里面的内容到底有多丰富,以及排列是整齐有序的还是杂乱无章的。
此时,基于逆向工程的技术能力,可以选择想进入的任意点“高维进入”,监视甚至改变二维平面上的运行逻辑,从而达到获取核心信息或软件设计原理等战术目的,而不是从二维世界打破外围城墙强行攻破。
说得似乎很玄乎,但事实上,就笔者对十余款经典App以及iOS系统进行逆向的经历过程来看,逆向工程的使用确实无一例外地达到了目标。
上面的比喻虽有些不恰当,但也形象地说明了iOS逆向工程的强大能力。现在回到正题,概括起来,iOS逆向工程主要有两个作用: