iOS应用逆向工程 第2版

iOS应用逆向工程 第2版 pdf epub mobi txt 电子书 下载 2025

沙梓社,吴航 著
图书标签:
  • iOS
  • 逆向工程
  • 安全
  • 应用
  • 技术
  • 开发
  • 调试
  • 破解
  • 实战
  • 攻防
想要找书就要到 图书大百科
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 机械工业出版社
ISBN:9787111494362
版次:2
商品编码:11670145
品牌:机工出版
包装:平装
丛书名: 信息安全技术丛书
开本:16开
出版时间:2015-04-01
用纸:胶版纸
页数:408

具体描述

编辑推荐

适读人群 :iOS狂热爱好者;中高级iOS开发人员;架构师
  

  全球首本讲解iOS8应用逆向工程的实战手册,作者毫无保留地分享了数年来在iOS逆向工程领域的经验;

  内容系统深入,逻辑紧密,实战性强,从iOS系统架构等理论出发,以多个实例贯穿全书,阐述class-dump、Theos、Cycript、Reveal、IDA、LLDB等常用工具的使用,通俗易懂;

  总结提炼出一套从UI观察切入代码分析的iOS应用逆向工程方法论,授人以渔。

内容简介

    你是否曾因应用上线的第一天即遭破解而无奈苦恼,想要加以防范,却又束手无策?  你是否曾为某一应用深深折服,想要借鉴学习,却又无从下手?  你是否已不满足于public API,想要进军Cydia开发,却又求学无门?  你是否已产生“不识Apple真面目,只缘身在App Store中”的危机感,想要通过阅读来一窥这冰山一角外的整个北极,却又找不到合适的书?  你是否已经因无法跨越开发路上的重重障碍而断了研究iOS逆向工程的念头?Are you a quitter?  看完本书,相信你会有全新的感受!
  

作者简介

   沙梓社,iOS越狱社区骨灰级活跃份子,思路开阔思想传统,对苹果的研究痴迷到连女朋友都没有的地步。作品见诸于Cydia,有SMSNinja、LowPowerBanner、DimInCall等。
   吴 航,十余年程序开发经验的资深码农,历经方正、NEC、Juniper等国内国外知名IT企业,2011年进入iOS领域,专注于iOS app/逆向等方向的开发,主要作品有安全管家、知乎月刊HD等。

精彩书评

  仔细阅读了本书,从字里行间可以感受到作者的认真,在当今这个浮躁的大环境中,这是非常难得的,单从认真这点来看,这本书绝不是一本“水货”,强烈推荐大家阅读,尤其是初学者。
  

  本书的前六章侧重于理论的介绍,但又不局限于理论,几乎每章都有至少一个小例子来帮助读者理解相关的理论。后面的几章侧重于实践,并且使用了一些大家耳熟能详的App作为例子,以此来降低读者的陌生感,可见作者用心之良苦。
  逆向工程对实践性要求非常高,因此学会与没学会的标准只有一个,那就是能不能抛开书本,使用与书中相同或者不同的方法,实现出相同的效果。大家在实践的过程中必然会遇到困难,可能会感觉学不下去了,但是希望大家在这时绝不要放弃,有句话叫“念念不忘,必有回响”,在感觉自己学不会时,可以先把这件事情放一放,但是不要忘记,过段时间再继续。经过几次这样的迭代后,相信你会掌握iOS逆向工程相关的理论与技巧。  
  ——Proteas 独立iOS研究员


  

  每一个iOS开发者都应了解的逆向知识都在这里了。这本书详细地介绍了常用的静态分析手法以及实用的动态分析技巧。不但可以帮助逆向新手快速上手,同时也能激发iOS开发熟手对应用安全的思考,把主动防御的思想渗透到项目开发中。
  ——念茜 支付宝iOS开发工程师

  如果你觉得对普通iOS App的开发已经有点疲倦了,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应用逆向工程(第二版)》:洞悉App内在奥秘,解锁无限可能 在这飞速发展的数字时代,移动应用已成为我们生活不可或缺的一部分。从社交娱乐到高效工作,无数App为我们带来了前所未有的便利与乐趣。然而,当我们沉浸于App带来的美好体验时,是否曾对它们是如何构建、如何运作,乃至隐藏在华丽界面背后的技术原理感到好奇?当遇到App的某些限制,或是希望深入了解其安全机制时,又该如何探寻真相? 《iOS应用逆向工程(第二版)》正是为所有怀揣这份好奇心、渴望深入理解iOS App内在世界的开发者、安全研究者、以及技术爱好者而精心打造的权威指南。本书并非简单地罗列枯燥的技术术语,而是以一种由浅入深、循序渐进的方式,带领读者踏上一段探索iOS应用底层机制的精彩旅程。我们将深入剖析App的生命周期、内存管理、运行时特性,以及开发者在构建应用时所采用的各种策略,从而揭示App在用户设备上“活”起来的奥秘。 内容梗概: 本书内容将围绕iOS应用的逆向工程展开,涵盖从基础概念到高级技巧的广泛领域。我们将首先为你构建坚实的理论基础,让你理解iOS操作系统的架构、Mach-O可执行文件格式,以及Objective-C和Swift运行时的工作原理。只有对这些底层知识有清晰的认知,才能更好地理解后续的逆向分析过程。 第一部分:基础篇——构建坚实的逆向工程基石 iOS系统架构概览: 深入了解iOS的各个层次,包括内核、框架、运行时以及应用层。我们将讲解Unix-like操作系统的特性如何在iOS中体现,以及Apple特有的安全机制如何影响逆向工程的实践。 Mach-O文件格式解析: 每一个iOS应用都以Mach-O文件的形式存在,理解其结构是逆向工程的基础。我们将详细剖析Mach-O文件的组成部分,如Header、Load Commands、Sections以及Symbol Table,并学习如何利用工具提取和分析这些信息。 Objective-C运行时剖析: Objective-C作为iOS开发的重要语言,其动态运行时特性为逆向工程提供了丰富的切入点。我们将深入探讨消息传递机制、方法查找、Method Swizzling、Protocol和Category,以及Runtime API的使用,理解Objective-C代码是如何在运行时被动态解析和执行的。 Swift运行时初探(针对基础层面): 尽管Swift拥有更现代的特性,但理解其与Objective-C的互操作性以及部分运行时机制对于完整的逆向分析同样重要。我们将介绍Swift特有的结构体、枚举、类以及其在运行时的一些表现,为后续更深入的Swift逆向打下基础。 iOS安全模型与沙盒机制: 安全是iOS系统设计的重中之重。我们将详细讲解Apple的沙盒机制,理解App的权限控制、数据隔离以及App Store审核流程,并探讨这些安全措施如何为逆向工程带来挑战,以及我们如何应对。 第二部分:工具篇——掌握主流逆向工程利器 工欲善其事,必先利其器。《iOS应用逆向工程(第二版)》将为你系统地介绍和实战演练一系列强大而实用的逆向工程工具。这些工具是你在探索App内在世界的得力助手。 静态分析工具: Hopper Disassembler / IDA Pro: 学习如何使用行业领先的反汇编器和反编译器来查看App的汇编代码和伪代码,理解程序的控制流和逻辑。我们将演示如何配置和使用这些工具进行高效的代码分析。 class-dump / dumpdecrypted: 掌握如何提取Objective-C类的头文件信息,从而快速了解App的类结构、方法签名和属性。 otool / nm: 学习如何使用这些命令行工具来检查Mach-O文件的段信息、符号表以及加载的库。 动态分析工具: LLDB / GDB(配合Frida): 深入学习如何使用调试器来附加到运行中的App,设置断点、检查内存、修改寄存器,以及单步执行代码,从而实时观察App的行为。 Frida: 作为跨平台的动态插桩工具,Frida将是你进行运行时Hook和代码注入的利器。我们将详细讲解Frida的工作原理、JavaScript API的使用,以及如何编写脚本来拦截和修改App的行为。 Cycript: 学习如何使用Cycript在运行时动态地查询和修改App的对象和属性,实现灵活的交互式分析。 Network Analysis Tools (e.g., Charles Proxy, mitmproxy): 掌握如何抓包和分析App与服务器之间的网络通信,理解数据传输的格式和协议,发现潜在的安全漏洞。 文件系统与数据分析: iExplorer / iFunBox: 学习如何访问和管理iPhone/iPad的文件系统,查看App的沙盒目录、偏好设置、数据库文件等,并进行数据提取和分析。 SQLite Browser / Plist Editor: 掌握如何解析和编辑App常用的数据存储格式,如SQLite数据库和.plist文件。 第三部分:实践篇——由浅入深的案例分析 理论结合实践,本书将通过一系列精心设计的案例,带领读者亲手实践逆向工程技术。这些案例将覆盖不同类型的App和技术难点,让你在实战中巩固所学知识,并锻炼解决实际问题的能力。 基础App信息提取与分析: 从一个简单的App入手,学习如何使用class-dump提取类信息,使用Hopper分析简单函数,理解App的基本构成。 Objective-C方法Hook与拦截: 演示如何使用Frida Hook Objective-C方法,打印方法调用参数、修改返回值,从而观察和控制App的行为。 Swift应用的基本逆向: 探索Swift App的逆向分析方法,理解Swift特有的Mangling以及如何在反汇编器中对其进行解析。 数据加密与解密分析: 学习如何识别App中的加密算法,并尝试使用运行时Hook或静态分析的方法来解密敏感数据。 网络通信协议分析与篡陷: 针对App的网络请求,分析其通信协议,识别敏感信息,并演示如何使用mitmproxy进行中间人攻击。 越狱环境下的逆向工程: 介绍在越狱设备上进行逆向工程的优势和特有工具,如Cydia Substrate、Activator等。 Rootless环境下的逆向工程(新版会更新): 随着iOS版本的更新,Rootless成为新的安全挑战,我们将探讨如何在Rootless环境下进行应用分析。 安全防护机制的绕过(如代码混淆、反调试): 学习常见的App安全加固技术,并掌握一些基本的绕过方法。 第四部分:进阶篇——探索更深层次的技术 在掌握了基础的逆向分析技巧后,本书将进一步引导你深入探索更高级的主题,拓宽你的技术视野。 内存分析与漏洞挖掘: 学习如何分析App的内存布局,寻找内存损坏、堆栈溢出等潜在漏洞,并使用内存分析工具进行辅助。 Hooking技术的深入应用: 除了Objective-C,我们将探讨如何Hook C函数、Swift方法,以及更底层的Mach kernel层面的Hooking技术。 自动化逆向工程: 介绍如何利用Python等脚本语言编写自动化工具,提高逆向分析的效率。 iOS安全攻防策略: 从攻击者的视角出发,了解App开发者可能采用的安全防护措施,并从防守者的角度思考如何加固自己的应用。 iOS应用安全审计与评测: 学习如何系统地对App进行安全审计,发现潜在的安全风险,并给出改进建议。 特定领域应用的逆向分析(如游戏、支付): 针对一些具有挑战性的应用类型,分析其逆向工程的难点与突破口。 本书特色: 权威性与前瞻性: 作者拥有丰富的iOS逆向工程实践经验,紧跟技术发展潮流,确保内容的时效性和权威性。 理论与实践并重: 深度剖析底层原理,并通过大量翔实的案例分析,帮助读者将理论知识转化为实战能力。 由浅入深,循序渐进: 结构清晰,从基础概念到高级技巧,确保不同水平的读者都能有所收获。 精选工具,实操演练: 详细讲解主流逆向工程工具的使用方法,并提供实操指导,让读者熟练掌握各种利器。 案例丰富,贴近实战: 涵盖多种类型的App和场景,使读者在解决实际问题中学习和成长。 语言通俗易懂,排版精美: 力求用清晰易懂的语言阐述复杂的技术概念,辅以高质量的图表和代码示例。 适合读者: iOS开发者: 了解自身应用的底层运行机制,提升代码安全意识,学习如何进行代码加固。 安全研究人员: 深入分析iOS App的安全漏洞,进行渗透测试和安全评估。 软件安全爱好者: 对iOS App的内部工作原理充满好奇,希望系统学习逆向工程技术。 对移动安全领域感兴趣的技术人员: 扩展技术栈,了解iOS安全生态。 结语: 《iOS应用逆向工程(第二版)》不仅仅是一本技术书籍,更是一扇通往iOS应用内在世界的大门。通过阅读本书,你将不再满足于仅仅成为App的使用者,而是能够化身为App的“解剖师”,深入理解其脉络,洞悉其灵魂。无论你是希望提升自己的技术能力,还是出于对安全的好奇,本书都将是你不可或缺的伙伴。立即翻开它,开启你的iOS逆向工程探索之旅吧!

用户评价

评分

翻开《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. 图书大百科 版权所有