軟件脫殼,顧名思義眯分,就是對軟件加殼的逆操作拌汇,把軟件上存在的殼去掉(解密)。
1弊决、砸殼原理
1.1噪舀、應(yīng)用加殼(加密)
提交給 Appstore
發(fā)布的 App
,都經(jīng)過官方保護(hù)而加密飘诗,這樣可以保證機(jī)器上跑的應(yīng)用是蘋果審核過的与倡,也可以管理軟件授權(quán)。經(jīng)過 App Store
加密的應(yīng)用昆稿,我們無法通過 Hopper
等反編譯靜態(tài)分析纺座,也無法 Class-Dump
,在逆向分析過程中需要對加密的二進(jìn)制文件進(jìn)行解密才可以進(jìn)行靜態(tài)分析溉潭,這一過程就是大家熟知的砸殼(脫殼)
1.2净响、應(yīng)用砸殼(解密)
1.2.1少欺、靜態(tài)砸殼
靜態(tài)砸殼就是在已經(jīng)掌握和了解到了殼應(yīng)用的加密算法和邏輯后在不運行殼應(yīng)用程序的前提下將殼應(yīng)用程序進(jìn)行解密處理。靜態(tài)脫殼的方法難度大馋贤,而且加密方發(fā)現(xiàn)應(yīng)用被破解后就可能會改用更加高級和復(fù)雜的加密技術(shù)
1.2.2赞别、動態(tài)砸殼
動態(tài)砸殼就是從運行在進(jìn)程內(nèi)存空間中的可執(zhí)行程序映像(image)入手,來將內(nèi)存中的內(nèi)容進(jìn)行轉(zhuǎn)儲(dump)處理來實現(xiàn)脫殼處理配乓。這種方法實現(xiàn)起來相對簡單仿滔,且不必關(guān)心使用的是何種加密技術(shù)。
2犹芹、砸殼
2.1崎页、Clutch
Clutch
是由 KJCracks
開發(fā)的一款開源砸殼工具。工具支持iPhone
腰埂、iPod Touch
飒焦、iPad
,該工具需要使用 iOS8.0
以上的越獄手機(jī)應(yīng)用盐固。
1荒给、將 Clutch
拷貝到手機(jī)目錄下
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、進(jìn)入手機(jī)目錄 /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志电、查看需要砸殼的 App
的 bundleID
Clutch -i
...
7: 微信 <com.tencent.xin>
···
5、對 WeChat
進(jìn)行砸殼
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
2鱼蝉、在當(dāng)前目錄拷貝
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
端口連接手機(jī)
ssh -p 12345 root@localhost
4箫荡、切換 mobile
用戶
su mobile
5魁亦、查看當(dāng)前 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、注入動態(tài)庫
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
是自己編譯運行的Demo
羔挡,Clutch
微信和抖音都沒有成功洁奈,據(jù)說只支持iOS12
以下的版本
2.2.2、dumpdecrypted
1绞灼、在 Cydia
應(yīng)用中搜索 Cycript
安裝
2利术、ssh
登錄手機(jī)
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印叁、看 APP
的 Documents
路徑:先用 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
拷貝到手機(jī) app
目錄下
scp -P 12345 dumpdecrypted.dylib mobile@localhost:/var/mobile/Containers/Data/Application/0015C950-12C5-40B6-8F6D-E816C43F24E0/Documents/
執(zhí)行到此處失敗了,沒查明原因轮蜕,可能也是手機(jī)版本過高的原因
最終會在 /var/mobile/
下面生成脫殼App
2.2.3昨悼、frida-ios-dump
該工具基于 frida
提供的強大功能通過注入js
實現(xiàn)內(nèi)存 dump
然后通過 python
自動拷貝到電腦生成 ipa
文件。
1肠虽、安裝 frida
工具
sudo pip3 install frida-tools
安裝過程可能會遇到以下情況:
- 目錄不歸當(dāng)前用戶所有幔戏。請檢查該目錄的權(quán)限和所有者.需要
sudo
的-H
標(biāo)志 -
set-home
將HOME
變量設(shè)為目標(biāo)用戶的主目錄
2玛追、添加源税课,打開 Cydia
選擇軟件源,點擊編輯-添加
https://build.frida.re
選擇變更痊剖,點擊 Frida
安裝
3韩玩、電腦終端,查看進(jìn)程
frida-ps
進(jìn)入到USB
進(jìn)程
frida-ps -U
...
9363 微信
10861 微信
11916 抖音
12361 百度網(wǎng)盤
進(jìn)入到微信陆馁,可以打印出當(dāng)前進(jìn)程的所有對象
frida -U 微信
4找颓、安裝 frida-ios-dump
相關(guān)內(nèi)容
sudo pip3 install -r requirements.txt --upgrade
如果在安裝的過程中出現(xiàn)錯誤
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 微信
在當(dāng)前目錄下回生成 微信.ipa
6叮贩、查看 ipa
包
解壓 微信.ipa
cd
到當(dāng)前目錄 WeChat.app
otool -l WeChat | grep cryptid
cryptid 0
7击狮、讓手機(jī)支持中文,將 .inputrc
文件拷貝到手機(jī)中
set convert-meta off
set output-meta on
set meta-flag on
set input-meta on
scp -P 12345 .inputrc root@localhost:/var/root/