新的博客地址

@[toc]

前言

iOS程序类型分为3类:Application, Dynamic Library,后台Daemon。

在越狱的设备上才会遇到需要开发后面两种类型程序的情况。

iOS开发的过程我们经常需要分析请求和返回数据,因此本文也介绍下Wireshark的基本使用。

I 、Application


平时我们开发提交到App Store的应用即是Application,设备没有越狱的情况下,应用只能访问沙盒内存文件和数据。

II、Dynamic Library


Dynamic Library(动态链接库),在其他平台很常见,比如Windows平台的DLL。苹果官方做了限制,所以在非越狱的情况下,需要提交到App Store的应用是不能包含动态链接库的,否则无法通过审核(Review)
后面要介绍的越狱程序(Tweak)开发,就是动态链接库。我们开发的大部分越狱程序,都是编译成动态链接库,然后通过越狱平台的MobileSubstrate(iOS7上叫CydiaSubstrate)来加载进入目标程序(Target),通过对目标程序的挂钩(Hook),来实现相应的功能。
后面会详细介绍越狱程序开发的原理,会对这个细节做进一步的介绍。

III、后台Daemon


后台Daemon类似于Windows的Service。对于Application来说,切换到Home就会暂停运行,而Daemon会在后台运行。在越狱设备上,之前用来拦截垃圾短信和电话的工具都是运行在后台的Daemon。

IV、Wireshark

如果是http/https的抓取,推荐使用Charles;

如果是socket,推荐使用Wireshark

Wireshark用的是RVI(Remote Virtual Interface)(iOS5以上才支持)。

wireshark是捕获机器上的某一块网卡的网络包,当你的机器上有多块网卡的时候,你需要选择一个网卡。
点击Caputre->Interfaces.. 出现下面对话框,选择正确的网卡。然后点击"Start"按钮, 开始抓包

  • 原理:

是在MAC上建立虚拟网络接口来作为iOS设备的网络栈,这样所有经过iOS设备的数据都会经过该虚拟接口,iOS设备可以为任意网络类型,这样在MAC上用tcpdump或WireShark来抓取该虚拟接口就能实现对iOS设备的抓包。

4.1 使用方法

    1. 获取设备udid

打开Xcode,按 shift + command + 2,找到你要抓包的iOS设备的Identifier后面的一长串,复制下来

  • 2.指定虚拟的网卡

打开Terminal,输入rvictl -s xxx 。xxx为你刚才复制的东西

  • 3.开始抓包

打开WireShark,找到设置按钮,排在首项的第四个,然后在输入项选择rvi0这个虚拟网卡,点开始,就开始抓包了。

-4、停止建立虚拟网络接口

devzkndeMacBook-Pro:~ devzkn$ rvictl -x 07cf5424d3844522c3396fc55f419a11633cb54c

4.2 封包详细信息 (Packet Details Pane)

Frame: 物理层的数据帧概况
Ethernet II: 数据链路层以太网帧头部信息
Internet Protocol Version 4: 互联网层IP包头部信息
Transmission Control Protocol: 传输层T的数据段头部信息,此处是TCP
Hypertext Transfer Protocol: 应用层的信息,此处是HTTP协议

see also


iOS逆向
44 声望15 粉丝