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

原文地址:https://www.cnblogs.com/gisblogs/p/9186382.html

时间: 2024-08-01 10:03:50

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

iOS KVO概述

iOS KVO概述 面试中经常会被问到:什么是KVO?这个问题既然出现概率这么大,那么我们就来详细讲一讲到底什么是KVO.下次再有面试官问你的时候,你就可以娓娓道来,以彰显高逼格 概述 问:什么是KVO? 答:KVO是Key-Value Observing的缩写.它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知.简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者了. 如果你能这样回答,面试官一定不会说你错的,这就是KVO的原理.但是如果你能说出KVO

ios逆向工程-静态分析

最近在学习IOS逆向工程,查看网络上的资料也不是太多,边学边总结一下. 首先学习资料: 念茜(大神)的博客: http://nianxi.net <ios应用逆向工程 分析与实战> ----------------------------------------------------凌乱的分割线------------------------------------------ 其次讲讲要用到的工具(ios安装工具使用Cydia中搜索安装,有些需要数据源可以自行查找): 已经越狱的IOS设备

iOS逆向工程的一些资料

Apple开发.调试工具下载链接  https://developer.apple.com/downloads/index.action 逆向工具下载  http://pan.baidu.com/s/1nt3BKyX iOS运行时工具-cycript http://blog.csdn.net/sakulafly/article/details/29633627 DEMO http://bbs.iosre.com/forum.php?mod=viewthread&tid=123 http://bb

ARM指令集应该也算得上是iOS逆向工程的基础

当然,如果读者仅仅是想阅读污点跟踪相关的代码,可以去github中按照自己的需要下载对应部分源码即可.如实现变量级.Native级污点跟踪的代码基本都在dalvik目录下,单个函数调用操作所使用的栈部分被称为栈帧(stack frame)结构,其一般结构如上图所示.栈帧结构的两端由两个指针来指定.寄存器ebp通常用做帧指针(frame pointer),而esp则用作栈指针(stack pointer).在函数执行过程中,栈指针esp会随着数据的入栈和出栈而移动,因此函数中对大部分数据的访问都基

iOS逆向工程之给App脱壳

本篇博客以微信为例,给微信脱壳."砸壳"在iOS逆向工程中是经常做的一件事情,,因为从AppStore直接下载安装的App是加壳的,其实就是经过加密的,这个“砸壳”的过程就是一个解密的过程.未砸壳的App是无法在Class-dump.Hopper等工具中使用的.所以我们要将App进行砸壳处理.在Android开发中也存在App加壳的处理,比如什么360加固了,其实就是给App加一层壳. 本篇博客我们就以WeChat(微信)为例,从AppStore上下载微信并安装,然后使用dumpdec

Lesson1 -- IOS开发概述 &amp;&amp; HelloWorld

第一部分:IOS开发概述 1. IOS 系统架构 iOS是基于UNIX的,就系统的稳定性而言,要比其他操作系统好很多,我们完全可以相信这个操作系统! iOS的系统架构分为四个层次: 1)可触摸层 2)媒体服务层 3)核心服务层 4)核心操作系统层 如下图: 2. iOS系统架构中各层次的功能 可触摸层(Cocoa Touch):为应用程序开发提供各种有用的框架,并且大部分均与用户界面有关,本质上来说它负责用户在iOS设备上的触摸交互操作. 媒体服务层(Media Services):负责提供用于

iOS逆向工程之使用LLDB的USB连接调试第三方App

LLDB是Low Level Debugger的简称,在iOS开发的调试中LLDB是经常使用的,LLDB是Xcode内置的动态调试工具.使用LLDB可以动态的调试你的应用程序,如果你不做其他的额外处理,因为debugserver缺少task_for_pid权限,所以你只能使用LLDB来调试你自己的App.那么本篇博客中就要使用LLDB来调试从AppStore下载安装的App,并且结合着Hopper来分析第三方App内部的结构.LLDB与Hopper的结合,会让你看到不一样的东西,本篇博客就会和你

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

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "PingFang SC"; color: #000000 } span.s1 { } span.s2 { font: 18.0px Menlo } 李洪强iOS之集成极光推送一iOS SDK概述 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #000000 } span.s1 { } JPus

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

ios的概述: ios  为apple手持设备系统: OS X 为apple的macbook.imac.mac min等的操作系统: 应用程序的格式:dmg    app iphone 第一代 2007  6月 iphone 3G  第二代 2008   7月 iphone 3GS  第三代 2009   6月 iphone 4     2010  6月 iphone 4S   2011  10月 iphone 5     2012  9月 iphone 5C/5S  2013 9月 iphon