美文网首页
[iOS逆向]18、砸壳

[iOS逆向]18、砸壳

作者: 史记_d5da | 来源:发表于2022-01-30 16:33 被阅读0次

软件脱壳,顾名思义,就是对软件加壳的逆操作,把软件上存在的壳去掉(解密)。

1、砸壳原理

1.1、应用加壳(加密)

提交给 Appstore 发布的 App ,都经过官方保护而加密,这样可以保证机器上跑的应用是苹果审核过的,也可以管理软件授权。经过 App Store 加密的应用,我们无法通过 Hopper 等反编译静态分析,也无法 Class-Dump ,在逆向分析过程中需要对加密的二进制文件进行解密才可以进行静态分析,这一过程就是大家熟知的砸壳(脱壳)

1.2、应用砸壳(解密)
1.2.1、静态砸壳

静态砸壳就是在已经掌握和了解到了壳应用的加密算法和逻辑后在不运行壳应用程序的前提下将壳应用程序进行解密处理。静态脱壳的方法难度大,而且加密方发现应用被破解后就可能会改用更加高级和复杂的加密技术

1.2.2、动态砸壳

动态砸壳就是从运行在进程内存空间中的可执行程序映像(image)入手,来将内存中的内容进行转储(dump)处理来实现脱壳处理。这种方法实现起来相对简单,且不必关心使用的是何种加密技术。

iOS应用运行原理

2、砸壳

2.1、Clutch

Clutch 是由 KJCracks 开发的一款开源砸壳工具。工具支持iPhoneiPod TouchiPad,该工具需要使用 iOS8.0 以上的越狱手机应用。
1、将 Clutch 拷贝到手机目录下
scp -P 12345 ./Clutch-2.0.4 root@localhost:/usr/bin/Clutch

Enter passphrase for key '/Users/shiji/.ssh/id_rsa': 
Clutch-2.0.4                                  100% 1204KB  30.8MB/s   00:00 

2、进入手机目录 /usr/bin
chmod +x Clutch
3、终端输入 Clutch

Usage: Clutch [OPTIONS]
-b --binary-dump <value> Only dump binary files from specified bundleID 
-d --dump <value>        Dump specified bundleID into .ipa file 
-i --print-installed     Print installed applications 
   --clean               Clean /var/tmp/clutch directory 
   --version             Display version and exit 
-? --help                Display this help and exit 
-n --no-color            Print with colors disabled 

4、查看需要砸壳的 AppbundleID
Clutch -i

...
7: 微信 <com.tencent.xin>
···

5、对 WeChat 进行砸壳
Clutch -d 7
6、将 WeChat 拷贝到电脑
scp -P 12345 root@localhost:/var/containers/Bundle/Application/85591C5D-5029-414F-9DC4-79C0DACF8518/WeChat.app/WeChat ./WeChat

2.2、dumpdecrypted
2.2.1、DYLD_INSERT_LIBRARIES 注入

1、新建 Inject.framework

Inject.framework
编译生成 Inject.framework
编译结果
2、在当前目录拷贝 Inject.framework/var/root
scp -r -P 12345 Insert.framework root@localhost:/var/root
Enter passphrase for key '/Users/shiji/.ssh/id_rsa': 
Insert                                        100%   66KB  10.5MB/s   00:00    
Insert.h                                      100%  425   282.0KB/s   00:00    
module.modulemap                              100%   93    72.0KB/s   00:00    
Info.plist                                    100%  784   531.7KB/s   00:00 

3、usb 端口连接手机
ssh -p 12345 root@localhost
4、切换 mobile 用户
su mobile
5、查看当前 InjectDemo 的文件路径
ps -A | grep InjectDemo

9561 ??         0:00.16 /var/containers/Bundle/Application/48514F00-4EA0-4D27-B007-AB0D52B9FEEB/InjectDemo.app/InjectDemo
 9563 ttys000    0:00.01 grep InjectDemo

6、注入动态库
DYLD_INSERT_LIBRARIES=Insert.framework/Insert /var/containers/Bundle/Application/48514F00-4EA0-4D27-B007-AB0D52B9FEEB/InjectDemo.app/InjectDemo

13:29:05.033 InjectDemo[9564:1084251] 注入成功--------------------------------------

备注:InjectDemo 是自己编译运行的 DemoClutch 微信和抖音都没有成功,据说只支持 iOS12 以下的版本

2.2.2、dumpdecrypted

1、在 Cydia 应用中搜索 Cycript 安装

Cycript

2、ssh 登录手机
ssh -p 12345 root@localhost
3、切换 mobile 用户
su mobile
4、查看砸壳APP路径
ps -e | grep WeChat

 9363 ??       372:47.00 /var/containers/Bundle/Application/85591C5D-5029-414F-9DC4-79C0DACF8518/WeChat.app/WeChat
10861 ??         0:03.62 /var/containers/Bundle/Application/85591C5D-5029-414F-9DC4-79C0DACF8518/WeChat.app/WeChat
10884 ttys000    0:00.01 grep WeChat

5、看 APPDocuments 路径:先用 cycript -p AppName 钩住 APP
cycript -p WeChat
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

["/var/mobile/Containers/Data/Application/0015C950-12C5-40B6-8F6D-E816C43F24E0/Documents"]

6、将 dumpdecrypted.dylib 拷贝到手机 app 目录下
scp -P 12345 dumpdecrypted.dylib mobile@localhost:/var/mobile/Containers/Data/Application/0015C950-12C5-40B6-8F6D-E816C43F24E0/Documents/

执行到此处失败了,没查明原因,可能也是手机版本过高的原因

最终会在 /var/mobile/ 下面生成脱壳App

2.2.3、frida-ios-dump

该工具基于 frida 提供的强大功能通过注入js 实现内存 dump 然后通过 python 自动拷贝到电脑生成 ipa 文件。
1、安装 frida 工具
sudo pip3 install frida-tools
安装过程可能会遇到以下情况:

  • 目录不归当前用户所有。请检查该目录的权限和所有者.需要 sudo-H 标志
  • set-homeHOME 变量设为目标用户的主目录

2、添加源,打开 Cydia 选择软件源,点击编辑-添加
https://build.frida.re
选择变更,点击 Frida 安装
3、电脑终端,查看进程
frida-ps
进入到USB 进程
frida-ps -U

...
 9363  微信                                           
10861  微信                                           
11916  抖音                                           
12361  百度网盘        

进入到微信,可以打印出当前进程的所有对象
frida -U 微信

微信

4、安装 frida-ios-dump 相关内容
sudo pip3 install -r requirements.txt --upgrade
如果在安装的过程中出现错误

ERROR: Could not build wheels for cryptography which use PEP 517 and cannot be installed directly

需要升级一下 pip3
curl https://bootstrap.pypa.io/get-pip.py | python3
5、./dump.py 微信
在当前目录下回生成 微信.ipa
6、查看 ipa
解压 微信.ipa
cd 到当前目录 WeChat.app
otool -l WeChat | grep cryptid

cryptid 0

7、让手机支持中文,将 .inputrc 文件拷贝到手机中

set convert-meta off
set output-meta on
set meta-flag on
set input-meta on

scp -P 12345 .inputrc root@localhost:/var/root/

相关文章

  • iOS 逆向 - 使用 dumpdecrypted 给 APP

    iOS 逆向 - 使用 dumpdecrypted 给 APP 砸壳 对 Google Sheets 进行砸壳 i...

  • [iOS逆向]18、砸壳

    软件脱壳,顾名思义,就是对软件加壳的逆操作,把软件上存在的壳去掉(解密)。 1、砸壳原理 1.1、应用加壳(加密)...

  • IOS逆向_脱壳工具:caluth、dumpdecrypted;

    1、 加壳; 2、 砸壳; 3、IOS逆向常见的砸壳工具; 1、 加壳; 1.1 概念:利用特殊的算法,对...

  • iOS逆向----砸壳

    操作环境 iPhone6 Plus(系统8.1)越狱机 MacBook Pro(系统10.12.5) 在越狱iPh...

  • iOS 逆向: 砸壳

    简介 所谓的砸壳, 指的是将从 App Store 上面下载的 App 进行破解的过程. 从 App Store ...

  • ios逆向-砸壳

    一、准备条件 1.越狱手机,我的手机是iphone6(12.4.1) 2.clutch软件,这个可以从github...

  • iOS逆向-砸壳

    砸壳 1.Clutch下载release版本,复制到手机/usr/bin目录.①.scp命令复制 scp -P ...

  • iOS逆向工程

    iOS逆向工程之Clutch砸壳 前言: 砸壳也可以使用别的工具 这个使用最简单 强烈推荐,其他工具比较麻烦 Cl...

  • iOS逆向工程之Clutch砸壳(图文多)

    iOS逆向工程之Clutch砸壳前言: 砸壳也可以使用别的工具 这个使用最简单 强烈推荐,其他工具比较麻烦 Clu...

  • iOS逆向之砸壳-Clutch砸壳

    一、安装Clutch砸壳工具: 1. 下载Clutch工具: 选择第一个可执行文件进行下载,顺便将下载后的文件版本...

网友评论

      本文标题:[iOS逆向]18、砸壳

      本文链接:https://www.haomeiwen.com/subject/btytkrtx.html