iOS 逆向: 砸壳

所谓的砸壳, 指的是将从 App Store 上面下载的 App 进行破解的过程. 从 App Store 上下载的 ipa 中的二进制文件是经过加密(加壳)的,需要通过破解才能让我们对其 为所欲为, 这里的破解就是通常所说的砸壳.

类似的, Android 应用(apk 文件)也有加壳操作, 如果想破解别人的 apk, 首先要进行砸壳操作.

准备工具

[1]. Clutch
[2]. iFunBox 或者 pp 助手
[3]. 越狱手机一台(本人iPhone6sPlus iOS10.3.x 系统).
[4]. 可以正常使用 SSH 功能.

如果你还没有安装上面提到的除 Clutch 之外的工具, 请先阅读 iOS 逆向: 查看系统文件目录和结构 这篇文章, 并安装对应的工具.

安装 Clutch

可以在 Github 获取 Clutch 源码, 然后自己在 MacOS 上面编译得到二进制文件.

也可以去直接下载已经编译好的 二进制包, 直接使用, 我是直接下载了已经编译好的二进制包的, 截止到写这篇文章为止, Clutch 版本为 2.0.4.

下载完成后, 我将其放到 ~/Downloads 目录下面了.

准备好越狱设备, 保证可以正常连接 wifi, 使用 scp 命令将 Clutch 二进制文件复制到设备的系统目录中, 命令如下:

1
scp ~/Downloads/Clutch root@192.168.91.126:/usr/bin

其中, 192.168.91.126 是我设备连接 wifi 后的 IP 地址.

复制成功后, 使用 iFunBox 可以看到 Clutch 静静地躺在那里.

你可以使用 iFunBox 或者 pp 助手, 直接将 ~/Downloads/Clutch 拖拽到 /usr/bin 目录.

Clutch 的基本使用

SSH 连接越狱设备, 开始使用 Clutch. 关于使用 SSH, 可以阅读一下 iOS 逆向: 越狱使用 SSH 这篇文章.

如果你发现直接执行 Clutch 说没有权限之类的提示, 可以先将其授予可执行的权限.

1
chmod +x /usr/bin/Clutch

Clutch 命令选项如下:

1
2
3
4
5
6
-b --binary-dump Only dump binary files from specified bundleID
-d --dump Dump specified bundleID into .ipa file
-i --print-installed Print installed application
--clean Clean /var/tmp/clutch directory
--version Display version and exit
-? --help Display this help and exit

-b 选项表示产出一个二进制文件, -d 选项表示产出一个 ipa 文件, -i 表示列出手机上面已经安装的 APP.

我们先看一下手机上已经安装的 App, 命令如下:

1
Clutch -i

这些 APP 前面的数字表示指定的 id. -d-b 选项都需要指定这些 id.

砸吧, 骚年

我们现在开始使用 Clutch 来对 APP 进行砸壳操作, 这里以已经安装的 App 序号为 8 的为例子.

使用下面的命令开始砸壳:

1
Clutch -d 8

效果如下图所示:

砸壳成功后会在 /private/var/mobile/Documents/Dumped 这个目录生成对应的 *.ipa 文件.

砸壳后的 ipa 文件, 可以从 iFunBox 中复制到 MacOS 的目录中, 然后你就可以对该 ipa 进行下一步操作了, 比如获取图片/音频/视频等资源和对应的头文件. 关于这些后续的越狱工作, 我会在下几篇博客中分享给大家.

也许有人会说了, 我自己从 pp 助手 中备份指定的 App 就可以获取资源了, 不需要使用 Clutch 这么麻烦了. 高系统版本, pp 助手 是无法直接获取 ipa 文件的, 况且我们也不仅仅是想获取别人 APP 的资源文件.

当然了, 你可以从越狱 APP 市场直接下载已经被砸壳的 App 进行玩耍, 不需要自己千辛万苦的去砸壳了.

Clutch 并不是万能的

上面大家可以看出, Clutch 是可以进行砸壳的并且也挺方便, 但 Clutch 并不是万能的, 也就是说, Clutch 不能将任意一个 App Store 下载 APP 进行砸壳.

拿上面序号为4 的微信来说, 执行下面命令报错:

1
Clutch -d 4

砸壳执行过程如下:

1
2
3
4
Writing new checksum
...
FAILED: <WeChat bundleID: com.tencent.xin>
Finished dumping com.tencent.xin in 28.7 seconds

还有一些 APP, 再被砸壳的时候会报如下的错误:

1
could not obtain mach port either the process is dead

虽然最新版本(2.0.4)说解决了该问题, 但是实际操作过程中, 还是会出现这个问题, 无法进行砸壳.

坚持原创技术分享!