搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
iOS应用逆向工程
0.00    
图书来源: 浙江图书馆(由图书馆配书)
  • 配送范围:
    全国(除港澳台地区)
  • ISBN:
    9787111494362
  • 作      者:
    沙梓社,吴航著
  • 出 版 社 :
    机械工业出版社
  • 出版日期:
    2015
收藏
编辑推荐
  

  全球首本讲解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等。

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

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

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


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

  如果你觉得对普通iOS App的开发已经有点疲倦了,iOS逆向工程绝对是你值得尝试的新领域。

  本书非常适合有一定iOS开发经验的读者,一步一步引导你走进逆向工程的大门。

  各种实用工具的讲解,让你倦意顿失;手把手的实践,让你意犹未尽。

  现在iOS越狱进入常态化,越狱开发的势头很猛,学会了逆向开发,多一种选择,对于普通开发也是受益颇多。

  ——沈悦 独立iOS开发者

展开
精彩书摘

  第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所示的这样。

展开
目录

目 录
推荐序一
推荐序二
第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

展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证