云在天 发表于 2018-2-6 18:55

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这个插件对代码框的显示。为什么预览 好好的,发布就不堪入目了

4kfooler 发表于 2018-2-7 08:12

楼主,请教下,我10.3.3越狱后,ssh手机连接不上,不知道什么原因。手机terminal里ssh是有的,我连接别人的越狱iPhone ios9是可以连接上的。自己的怎么弄不搞不定。

wshjay 发表于 2018-8-3 17:34

本帖最后由 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

jnme888 发表于 2018-2-6 20:05

前来学习了。

润夏 发表于 2018-2-6 21:03

学习一下,共同进步。

basketwill 发表于 2018-2-6 21:43

dianzan...

mxage 发表于 2018-2-6 21:48

感谢分享好的教程

Hmily 发表于 2018-2-6 21:51

各式有些乱,代码用代码框处理下吧。

云在天 发表于 2018-2-6 22:08

Hmily 发表于 2018-2-6 21:51
各式有些乱,代码用代码框处理下吧。

{:301_1008:}感觉用了代码框更乱了,代码框里怎么换行。。。

evill 发表于 2018-2-6 22:24

xcode编译不过,xcode版本的问题么?

云在天 发表于 2018-2-6 22:53

evill 发表于 2018-2-6 22:24
xcode编译不过,xcode版本的问题么?

编译不过就下载编译好的吧
https://github.com/KJCracks/Clutch/releases

绝美之城 发表于 2018-2-7 01:06

前来学习了。
页: [1] 2 3 4 5 6 7 8
查看完整版本: IOS逆向-IPA砸壳