IOS逆向

Gitbook

基本概念

IOS文件目录结构

目录 是否会被iTunes同步 说明
MyApp.app 不会 该目录包含了应用程序本身的数据,程序打包的时候的资源文件和一些本地文件就是存放在这个目录下的。 程序的可执行程序、plist文件也在这个目录下。
Documents 使用这个目录来保存关键数据。关键数据指那些应用不可再生的数据。
Library 会(Library/Caches除外) 用来保存一些配置文件和其他一些文件。其中使用NSUserDefaults写的设置数据都会保存到Library/Preferences目录下的一个plist文件中。Library/Caches可以用来保存可再生的数据,比如网络请求,用户需要负责删除对应文件。
tmp 不会 使用这个目录来保存各种应用下次启动不再需要的临时文件。当应用不再需要这些文件的时候,需要主动将其删除。(当应用不再运行的时候,系统可能会将此目录清空。)

程序类型

程序类型 说明
Application 平时我们开发提交到App Store的应用即是Application,设备没有越狱的情况下,应用只能访问沙盒内存文件和数据。
Dynamic Library Dynamic Library(动态链接库),在其他平台很常见,比如Windows平台的DLL。苹果官方做了限制,所以在非越狱的情况下,需要提交到App Store的应用是不能包含动态链接库的,否则无法通过审核(Review)
后面要介绍的越狱程序(Tweak)开发,就是动态链接库。我们开发的大部分越狱程序,都是编译成动态链接库,然后通过越狱平台的MobileSubstrate(iOS7上叫CydiaSubstrate)来加载进入目标程序(Target),通过对目标程序的挂钩(Hook),来实现相应的功能。
后台Daemon 后台Daemon类似于Windows的Service。对于Application来说,切换到Home就会暂停运行,而Daemon会在后台运行。在越狱设备上,之前用来拦截垃圾短信和电话的工具都是运行在后台的Daemon。

工具

iPhone-Backup-Analyzer-2

Corellium

Corellium是什么呢?Corellium是一款经过多年研发的iOS虚拟机(模拟器)。它可以启动虚拟的iPhone和iPad,以及其所运行的所有版本的iOS操作系统。通过Corellium,黑客、安全研究员、软件开发和测试人员可以在设备上尝试他们想要的任何东西,无论是寻找安全漏洞还是只是在不同的Apple硬件和软件上测试他们的应用程序。它可以暂停,创建快照和回滚。还可进行lldb对app或者iOS内核进行调试。白苹果了也没有关系,你可以在几分钟内创建一个全新的任意版本的越狱后的虚拟Apple设备。

原文在此:
https://weibo.com/ttarticle/p/show?id=2309404285641759270427

UI分析工具

UI分析工具是对iOS应用的UI进行分析的工具,有:

Reveal能够在运行时调试和修改iOS应用程序。它能连接到应用程序,并允许开发者编辑各种用户界面参数,这反过来会立即反应在程序的UI上。就像用FireBug调试HTML页面一样,在不需要重写代码、重新构建和重新部署应用程序的情况下就能够调试和修改iOS用户界面。

文件系统查看工具

在iOS设备上可以安装

等工具,可以查看iOS应用的文件系统结构。

数据库查看工具

在iOS逆向工程中,有时候需要把iOS设备中的SQLite数据库文件拷贝到Mac上,然后用工具打开,常用的有:

应用保存在iOS设备上的SQLite数据,是很容易被他人获取的,设备无需越狱。

网络分析工具

使用

  • Tcpdump
  • WireShark
  • Charles

等工具可以对应用的网络数据进行分析。

Charles是Mac下常用的对网络流量进行分析的工具,类似于Windows下的Fiddler。在开发iOS程序的时候,往往需要调试客户端和服务器的API接口,这个时候就可以用Charles,Charles能够拦截SSL请求、模拟慢速网络、支持修改网络请求包并多次发送、能够篡改Request和Response等强大的功能。下面介绍安装和使用方法。

逆向程序开发工具

开发越狱程序和日常开发的iOS程序很相似,不过,越狱程序能做更强大的事情。你的设备越狱之后,你就能够hook进Apple提供的几乎所有的class,来控制iPhone/iPad的功能。
Theos大幅简化了编写越狱程序的流程,后面会对该工具进行详细的介绍。

反汇编工具

IDA

IDA Pro是一款非常强大的反汇编工具,甚至能够将汇编代码转换成近似于源码的伪代码。

Hopper

调试器

在iOS逆向工程中,可以使用gdb来对iOS应用进行动态分析,进行单步调试,也可以使用Cycript来对iOS进行动态分析。
动态分析中还常使用调试器(Debugger,比如gdb)分析应用的内部结构与原理。

Keychain-Dumper

一旦iOS设备被越狱,攻击者可以检查哪些钥匙串项可用的工具。

ziphone

class-dump-z

Disassembler

Clutch

Cycript

动态修改内存,给内存打补丁。

Snoop-it

iNalyzer

Introspy

iNalyzer

Mobile Substrate

Tweak

Logify

参考

逆向

未分类

坚持原创技术分享,您的支持将鼓励我继续创作!