IOS逆向-IPA砸壳
本帖最后由 云在天 于 2018-2-7 00:50 编辑IOS逆向-IPA砸壳
===
# 一、背景
从**APPStore** 商店下载安装的APP 默认都被苹果加了一层壳,加了壳后我们就无法使用 *class-dump* , *Hook* 等功能,这里的壳与**Win**平台上的加密壳类似,但脱壳的难度比**Win**平台的低。
***
# 二、方法
## 方法一
直接在第三方平台上下载越狱应用
***
如**PP助手**,下载后的IPA包即是已经砸过壳的应用,但有一个缺点就是架构比较唯一,一般是 *armv7* 的架构,但**新CPU理论兼容旧架构**,如果你手头没有越狱手机,这也不失为一种方法。
## 方法二
使用 Clutch 对越狱手机上应用进行砸壳
### 准备工作
一台**越狱**的手机,一台MAC
### 操作步骤
1. 下载Clutch:
已编译版本: https://github.com/KJCracks/Clutch/releases
未编译可用代码
```bash
$ git clone https://github.com/KJCracks/Clutch
$ cd Clutch
$ xcodebuild -project Clutch.xcodeproj -configuration Release ARCHS="armv7 armv7s arm64" build #使用Xcode编译
```
这里也可以直接用Xcode打开编译
2. 将工具拷贝到手机:**/usr/bin/**路径下
* 工具:**iFunBox** 或者其他的第三方工具
* 命令:
```bash
scp Clutch/clutch root@<你设备IP>:/usr/bin/
```
3. 确保手机已经连接了WIFI并且你的手机的WIFI和你的电脑要在同一个局域网内,打开终端输入:
```bash
ssh root@xx.xx.xx.xx,(xx.xx.xx.xx)为你的手机的IP地址-->Enter
```
4. 接着会提示你输入password:这里的密码一般情况下是**alpine**,但是如果你更改过的话就用你更改的**这里的密码是手机openssh的密码,不是电脑密码也不是手机解锁密码**
5. 输入
```bash
cd /usr/bin
```
6. 截止到上一步,Clutch已经安装成功了,下面就可以开始砸壳了,输入:
```bash
Clutch -i
```
获取已安装应用的包名,显示如下:
```bash
#Installed apps:
#1:WeChat <com.tencent.xin>
#2:DingTalk <com.laiwang.DingTalk>
```
这里只截取了一部分
7. 有了包名就可以执行砸壳了,这里以微信为例子,输入以下命令
```bash
$ clutch -d com.tencent.xin
```
显示如下
```bash
# com.tencent.xin contains watchOS 2 compatible application. It's not possible to dump watchOS 2 apps with Clutch 2.0.4 at this moment.
# Zipping WeChat.app
# Swapping architectures..
# ASLR slide: 0xb3000
# ...
# writing new checksum
#DONE:/private/var/mobile/Documents/Dumped/com.tencent.xin-iOS7.0-(Clutch-2.0.4).ipa
# Finished dumping com.tencent.xin in 76.9 seconds
```
**注意DONE**后面就是砸壳成功后保存的路径
8. 我们把这个路径下的IPA导出到Mac上,砸壳就结束了
# 三、总结
砸壳的方法有很多种,工具也很多,如果上面的方法不能达到效果,可以尝试其他方法,以后我也会补充相关的工具使用教程。
@Hmily 已用MarkDown重新排版,请审阅!{:301_975:}
PS:吐槽下MarkDown这个插件对代码框的显示。为什么预览 好好的,发布就不堪入目了 楼主,请教下,我10.3.3越狱后,ssh手机连接不上,不知道什么原因。手机terminal里ssh是有的,我连接别人的越狱iPhone ios9是可以连接上的。自己的怎么弄不搞不定。 本帖最后由 wshjay 于 2018-8-3 17:35 编辑
砼小砼 发表于 2018-6-1 17:47
我用5S砸壳,用Clutch、frida-ios-dump、dumpdecrypted各自砸了一遍微信,WeChat.decrypted: Mach-O 64-bit ...
涨见识
一开始,我砸完壳再dump的时候是失败的,怎么弄都只有一个空的文件,真的很苦恼,我就到处搜关于这方面的资料,最后让我发现原来砸壳,也要分机型,也要分cpu指令集的。
我们先看看iPhone的cpu指令集
armv6设备:iPhone,iPhone2,iPhone3G
armv7设备:iPhone3GS,iPhone4,iPhone4S
armv7s设备:iPhone5,iPhone5C
arm64设备:iPhone5S,iPhone6,iPhone6S
一个二进制文件里包含着适合多个cpu架构使用的可执行文件。cpu架构是向下兼容的,即arm64可执行armv7s的指令,反之则不行。
在你砸壳的时候,cpu会选择最适合自己的那一份指令集。所以,在提取头文件的时候应该对应指令集去提取。否则会失败。
还有另外一点需要注意的是,如果你用iPhone5砸壳,重签出来的ipa安装在iPhone5以上的设备是会闪退的。
链接:https://www.jianshu.com/p/5533c36947d5 前来学习了。 学习一下,共同进步。 dianzan... 感谢分享好的教程 各式有些乱,代码用代码框处理下吧。 Hmily 发表于 2018-2-6 21:51
各式有些乱,代码用代码框处理下吧。
{:301_1008:}感觉用了代码框更乱了,代码框里怎么换行。。。 xcode编译不过,xcode版本的问题么? evill 发表于 2018-2-6 22:24
xcode编译不过,xcode版本的问题么?
编译不过就下载编译好的吧
https://github.com/KJCracks/Clutch/releases 前来学习了。