逆向工程一词,对很多人来说可能很陌生,在android领域,我们经常会听到“反编译某个apk”,那么逆向工程从某种角度讲也包括反编译这项技术,这样一对比,可能我们就更容易理解逆向工程的定义了。
我们引用百度百科对这个词更加精准地解释:
逆向工程(又称逆向技术),是一种产品设计技术再现过程,即对一项目标产品进行逆向分析及研究,从而演绎并得出该产品的处理流程、组织结构、功能特性及技术规格等设计要素,以制作出功能相近,但又不完全一样的产品。逆向工程源于商业及军事领域中的硬件分析。其主要目的是在不能轻易获得必要的生产信息的情况下,直接从成品分析,推导出产品的设计原理。
一、逆向工程的作用是什么
逆向工程并不是为了破解他人的软件为目的,在商业领域,有更加重要的作用,具体包括以下几个方面。
安全审查:对于iOS 开发者来说,不仅仅是完成产品的业务功能,尤其对大公司,还需要非常重视安全问题。通过逆向工程,及早发现问题,修改问题,避免发布后到用户手中引起各种舆情问题,损害公司声誉。
分析竞品:1.参考竞品app的架构设计;2.参考竞品app的接口设计;3.关键技术的实现细节。
学术研究:通过逆向,实现学术研究,主要用于学习。
突破app的使用限制:很多app对不同的用户有使用权限的限制,比如收费,或者vip用户才能使用的功能,通过逆向提前获取使用权限,当然不推荐这种方式,建议大家还是支持正版。
识别侵权:主要用于调查竞品或商业产品,识别侵权行为。
二、逆向分析的方法
iOS逆向分析的方法主要包括静态和动态两种分析方法。
静态分析顾名思义是在app未运动的情况下,对应用本身的一种分析方法。我们都知道iOS的沙盒机制,沙盒里会存储app的各种信息,包括应用的文件系统结构,比如数据库等;此外,使用一些特殊工具,如反汇编工具对app代码进行查看等,都属于静态分析的范畴。
动态分析是在app运行过程中,通过在线调试,分析应用的文件结构,内存的变化,界面的展示等,同时也可以观察网络数据的请求,通过抓包分析业务的走向,协议的定义等。
两种分析方法在实际的逆向过程中,应当配合使用,比如静态分析获取app的基本信息以及数据存储结构,再通过动态分析的方法进一步深入app内部,研究具体实现和原理,大大提供分析效率。
三、逆向分析工具
工欲善其事必先利其器,掌握了方法之后,还要学会使用各种工具,分析app的不同功能。这些工具主要包括以下:
工具分类 | 工具名称 |
---|---|
越狱工具 | 盘古越狱 |
UI分析工具 | Reveal和PonyDebugger等 |
文件系统查看工具 | iExplorer, iFunbox, iTool等 |
网络分析工具 | WireShark, Charles等 |
反汇编工具 | Hopper, IDA Pro等 |
调试器 | Cycript, gdb等 |
逆向程序开发工具 | Theos |
其他 | ... |
以上工具有的是付费工具,可以使用破解版本,具体的功能我们在后续章节介绍。
四、总结
本篇对iOS逆向工程做了概述,介绍了逆向的方法以及工具,后面的章节会进行详细的介绍。
转自:https://blog.csdn.net/wu__di/article/details/54934683