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