iOS软件在逆向工程的作用
Editor 2018-11-24 08:47:15打个比喻,iOS逆向工程就像一杆长矛,专门用于刺破目标程序本以为安全的保护盾,而且还是从想象不到的角度来刺破。
对于微信、陌陌、WhatsApp之类的IM软件,交流的信息是它们的核心;对于银行、交易支付、电商类的软件,交易和客户信息是它们的核心。所有的核心数据都是需要重点保护的,于是,数据库加密、网络连接加密、云存储等,开发人员通过各种手段重重保护,为的就是让使用者能够高枕无忧。
可是iOS逆向工程对这些常规App的攻击不是来自同一个维度!这些攻击可用一个词来定义:维度攻击(“维度攻击”的概念来自科幻小说《三体》,在此向《三体》致敬)。
从维度的角度来解释,我们看待常规App的感觉更像是将App的所有数据、UI、逻辑内容都平展地铺开在一张二维的大纸上,外围圈上厚厚的城墙。它的平面图概念如同图1-1所示的谷歌地图一般。
但是当我们跳跃到城墙之外,在三维的天空中俯瞰这个App的二维城堡,这个城堡的内部结构几乎完全开放在眼前,包括所有的Objective-C函数定义、所有的接口数据、甚至所有的函数内执行代码。城墙的防护意义已经荡然无存!此时限制我们的只是这个二维平面城堡到底有多大,里面的内容到底有多丰富,以及排列是整齐有序的还是杂乱无章的。
此时,基于逆向工程的技术能力,可以选择想进入的任意点“高维进入”,监视甚至改变二维平面上的运行逻辑,从而达到获取核心信息或软件设计原理等战术目的,而不是从二维世界打破外围城墙强行攻破。
说得似乎很玄乎,但事实上,就笔者对十余款经典App以及iOS系统进行逆向的经历过程来看,逆向工程的使用确实无一例外地达到了目标。
上面的比喻虽有些不恰当,但也形象地说明了iOS逆向工程的强大能力。现在回到正题,概括起来,iOS逆向工程主要有两个作用:
1、攻破目标程序,拿到关键信息,可以归类于与安全相关的逆向工程;
2、借鉴他人的程序功能来开发自己的软件,可以归类于与开发相关的逆向工程。