分享

什么是 iOS逆向工程?

 budaozheli 2016-12-21

软件逆向工程,指的是通过分析一个程序或系统的功能、结构或行为,将它的技术实现或设计细节推导出来的过程。当我们对一个软件的功能很感兴趣,却又拿不到它的源代码时,往往可以通过逆向工程的方式对它进行分析。

第1章 iOS逆向工程简介

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


图1-1 防御良好的城堡(图片来自刺客信条)

但是当我们站到高处,在天空中鸟瞰这个App所在的城堡,它的内部结构就不再是秘密,如图1-2所示。


图1-2 鸟瞰城堡(图片来自刺客信条)

这时,所有的Objective-C函数定义、所有的property、所有的导出函数、所有的全局变量、所有的逻辑完全暴露在我们面前,城墙的防护意义荡然无存。处在这个维度,城墙已经不再是阻碍,我们更应该关注的是如何从偌大的城堡里面找到想要找的那一个人。

此时,基于iOS逆向工程技术,可以在不破坏城墙的前提下,选择任意高维度地点进入低维度城堡,巧取而不强夺,通过监视甚至改变App的运行逻辑,从而达到获取核心信息,了解软件设计原理等战术目的。

说得似乎很玄乎,可事实就是如此。就笔者数年来对App和iOS系统本身进行逆向工程的经历和成果来看,iOS应用逆向工程可以“透视”绝大多数App,它们的设计理念与实现细节在逆向工程中暴露无遗。

以上比喻只是iOS逆向工程的一隅之见,但也形象地说明了iOS逆向工程的强大威力。概括起来,iOS逆向工程主要有两个作用:

  • 分析目标程序,拿到关键信息,可以归类于安全相关的逆向工程;

  • 借鉴他人的程序功能来开发自己的软件,可以归类于开发相关的逆向工程。

——本文摘自《iOS应用逆向工程 第2版


书籍介绍


内容简介

书名《iOS应用逆向工程 第2版》

ISBN:978-7-111-49436-2

作者:沙梓社 吴航 著

定价:79.00

出版时间:2015/03


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

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

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


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多