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

iOS逆向工程概述(转)的更多相关文章

  1. iOS逆向工程资料

    链接: 基于iOS逆向工程的微信机器人 - 猫友会大讲坛第1期 我的失败与伟大 —— 创业必备的素质(狗神经验谈)

  2. iOS KVO概述

    iOS KVO概述 面试中经常会被问到:什么是KVO?这个问题既然出现概率这么大,那么我们就来详细讲一讲到底什么是KVO.下次再有面试官问你的时候,你就可以娓娓道来,以彰显高逼格 概述 问:什么是KV ...

  3. 我也要学iOS逆向工程--全局变量

    大家好!很久不见了.我之前去音乐学院进修爵士吉他去了.现在回来了.之前我一直在学windows开发和逆向.后来到了音乐学院,老师推荐了1个录音软件叫logic prox.可惜啊!当时我只有个索尼的笔记 ...

  4. iOS逆向工程,(狗神)沙梓社大咖免费技术分享。

    序言 简介:本文针对于广大iOS开发者,作为一名开发者,仅仅专注于一门语言可能已经不适用现在的市场需求,曾经因高薪和需求量巨大,而火爆一时的移动端开发者(Android,ios),如今的路却是不再那么 ...

  5. 李洪强iOS之集成极光推送一iOS SDK概述

    李洪强iOS之集成极光推送一iOS SDK概述 JPush iOS 从上图可以看出,JPush iOS Push 包括 2 个部分,APNs 推送(代理),与 JPush 应用内消息. 红色部分是 A ...

  6. ios逆向工程-静态分析

    最近在学习IOS逆向工程,查看网络上的资料也不是太多,边学边总结一下. 首先学习资料: 念茜(大神)的博客: http://nianxi.net <ios应用逆向工程 分析与实战> --- ...

  7. ios的概述和了解的个人总结

    ios的概述: ios  为apple手持设备系统: OS X 为apple的macbook.imac.mac min等的操作系统: 应用程序的格式:dmg    pkg   app iphone 第 ...

  8. ios 逆向工程文档汇总

    iOS逆向工程工具集 http://www.jianshu.com/p/7f9511d48e05 移动App入侵与逆向破解技术-iOS篇 http://blog.csdn.net/heiby/arti ...

  9. ios逆向工程

    原 ios逆向工程-内部钩子(Method Swizzling)   Method+Swizzling ios hook Method Swizzling(方法调配) 怎么说呢,先了解什么是钩子为什么 ...

随机推荐

  1. 生成唯一UUID

    目前有多种方式生成的UUID,根据算法,可确定是否唯一,使用IP和MAC自定义生成唯一主键较妥: // 获取MAC地址的方法 private static String getMACAddress(I ...

  2. 2018-2019-2 20175204 张湲祯 实验二《Java面向对象程序设计》实验报告

    2018-2019-2-20175204 张湲祯 实验二 <Java开发环境的熟悉>实验报告 实验二 Java面向对象程序设计 一.实验内容: 初步掌握单元测试和TDD 理解并掌握面向对象 ...

  3. dataguard丢失归档日志处理

    检查alert日志发现报错如下 Wed Mar 27 15:40:30 2019Managed Standby Recovery not using Real Time ApplyParallel M ...

  4. memcached单机或热备的安装部署

    一.部署准备 1.安装Java 不建议使用系统默认Open JDK版本,需要手工另行安装.JDK版本建议为1.7+,若Java已安装完毕,则无需重复安装. 安装过程如下: (1)获取JDK安装包: ( ...

  5. 解释内存中的栈(stack)、堆(heap)和静态区(static area)的用法

    堆区:专门用来保存对象的实例(new 创建的对象和数组),实际上也只是保存对象实例的属性值,属性的类型和对象本身的类型标记等,并不保存对象的方法(方法是指令,保存在Stack中) 1.存储的全部是对象 ...

  6. 高可用Redis(八):Redis主从复制

    1.Redis复制的原理和优化 1.1 Redis单机的问题 1.1.1 机器故障 在一台服务器上部署一个Redis节点,如果机器发生主板损坏,硬盘损坏等问题,不能在短时间修复完成,就不能处理Redi ...

  7. 算法工程师<编程题>

    <编程题> 1.[Maximum Product Subarray 求最大子数组乘积] 这个求最大子数组乘积问题是由最大子数组之和问题演变而来,但是却比求最大子数组之和要复杂,因为在求和的 ...

  8. ef core自动映射

    原回答:https://stackoverflow.com/questions/26957519/ef-core-mapping-entitytypeconfiguration 一.反射 protec ...

  9. [原创][Synth 8-2543] port connections cannot be mixed ordered and named ["*_Top.v":1151]

    Vivado综合错误: [Synth 8-2543] port connections cannot be mixed ordered and named ["*_Top.v":1 ...

  10. C# 编译运行原理