[iOS逆向]18、砸壳

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

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/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容