• iOS逆向工程概述(转)


    逆向工程一词,对很多人来说可能很陌生,在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

  • 相关阅读:
    ExtAspNet应用技巧(二)
    JavaScript继承详解(六)
    ExtAspNet新版本发布,集成Extjs3.0,兼容IE浏览器
    ExtAspNet发展规划
    把Doc文档转换成rtf格式 (转载)
    提高Sql Server性能的10个技巧
    winform中树和数据库关联操作的例子(C#)
    为什么C#没有提供“缺省参数”
    让UML消失一段时间
    把RichTextBox中的文本保存到Sql Server中
  • 原文地址:https://www.cnblogs.com/gisblogs/p/9186382.html
Copyright © 2020-2023  润新知