一、砸殼
正版應(yīng)用的MachO的cryptid 為 1煞茫,越獄應(yīng)用的MachO的cryptid 為 0軟件脫殼啰扛,顧名思義嚎京,就是對軟件加殼的逆操作,把軟件上存在的殼去掉(解密)隐解。
只有砸過殼的才能反匯編分析鞍帝、才能class-dump、才能重簽名
1帕涌、砸殼原理
1.1、應(yīng)用加殼(加密)
提交給Appstore發(fā)布的App续徽,都經(jīng)過官方保護(hù)而加密蚓曼,這樣可以保證機器上跑的應(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)用砸殼(解密)
- 靜態(tài)砸殼:靜態(tài)砸殼就是在已經(jīng)掌握和了解到了殼應(yīng)用的加密算法和邏輯后在不運行殼應(yīng)用程序的前提下將殼應(yīng)用程序進(jìn)行解密處理裹匙。靜態(tài)脫殼的方法難度大瑞凑,而且加密方發(fā)現(xiàn)應(yīng)用被破解后就可能會改用更加高級和復(fù)雜的加密技術(shù)。
- 動態(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技掏、iOS應(yīng)用運行原理
二铃将、工具一:Clutch
Clutch是由KJCracks開發(fā)的一款開源砸殼工具。工具支持iPhone哑梳、iPod Touch劲阎、iPad,該工具需要使用iOS8.0以上的越獄手機應(yīng)用鸠真,iOS11以上好像也沒法用了悯仙。
1、安裝
- 官網(wǎng):https://github.com/KJCracks/Clutch
-
找到發(fā)布版本
-
下載最新的
2吠卷、使用
映射端口
python tcprelay.py -t 22:12345
-
拷貝工具到手機
scp -P 12345 Clutch-2.0.4 root@localhost:/usr/bin
拷貝到/usr/bin
锡垄,是為了在任何地方都可以用Clutch-2.0.4
,如果不放在這個文件夾下祭隔,則需要到放Clutch-2.0.4
的文件夾下./
執(zhí)行Clutch-2.0.4
mv Clutch-2.0.4 Clutch
移動一下货岭,重命名
mv 文件名1 文件名2
把文件名1重命名為文件名2,mv
移動的意思
mv 文件1 位置1
把文件1移動到位置1
Clutch
在~
目錄下tab不出來序攘,那是Clutch
沒有權(quán)限茴她,添加個權(quán)限即可
- 列出可以砸殼的應(yīng)用列表
$Clutch -i
- 砸殼
$Clutch –d 應(yīng)用ID(或編號)
eg:Clutch -d com.tencent.edu
或$Clutch –d 4
- 拷貝到電腦上
scp -P 12345 root@localhost:/private/var/mobile/Documents/Dumped/ketang.ipa ~/Desktop/
拷貝到桌面
可以用Xcode安裝.ipa了寻拂,
三程奠、插入動態(tài)庫
是插入,不是注入哦
選擇項目
TestDyz
Build一下會把所有的Framework都Build出來祭钉;選擇對應(yīng)的
Framework
Build一下會把對應(yīng)的Framework Build出來瞄沙;TestDyz
Framework
test1.framework
拷貝到桌面拷貝到手機
scp -P 12345 -r ~/Desktop/test1.framework root@localhost:~/
查看運行的machO
ps -A
插入,是插入不是注入
DYLD_INSERT_LIBRARIES=動態(tài)庫的路徑 運行的machO的路徑
eg:
DYLD_INSERT_LIBRARIES=test1.framework/test1 /var/mobile/Containers/Bundle/Application/98E64AC3-BB0C-4E0B-AB5A-55182669FE87/AlipayWallet.app/AlipayWallet
這個
test1.framework/test1
動態(tài)庫依附在/var/mobile/Containers/Bundle/Application/98E64AC3-BB0C-4E0B-AB5A-55182669FE87/AlipayWallet.app/AlipayWallet
這個MachO上運行
四慌核、工具二:dumpdecrypted
Github開源工具距境。 dumpdecrypted這個工具就是通過建立一個名為dumpdecrypted.dylib的動態(tài)庫,插入目標(biāo)應(yīng)用實現(xiàn)脫殼垮卓。
1垫桂、安裝
官網(wǎng) :https://github.com/stefanesser/dumpdecrypted 直接Git Clone
dumpdecrypted
砸出來的是可執(zhí)行文件MachO-
通過Make 編譯生成動態(tài)庫
-
遠(yuǎn)程拷貝到手機
scp -P 12345 dumpdecrypted.dylib root@localhost:~/
通過
DYLD_INSERT_LIBRARIES
環(huán)境變量插入動態(tài)庫執(zhí)行-
查看運行的machO
ps -A
、ps -A | grep Ali
(添加了篩選)
插入
DYLD_INSERT_LIBRARIES=動態(tài)庫的路徑 運行的machO的路徑
eg:DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/mobile/Containers/Bundle/Application/DF6975A8-3987-4B3C-8617-268C90EA378D/AlipayWallet.app/AlipayWallet
然后ls粟按,多出來一個
AlipayWallet.decrypted
诬滩,這個是砸過殼之后的MachO-
拷貝到電腦
五、工具三:frida-iOS-dump
該工具基于frida提供的強大功能通過注入js實現(xiàn)內(nèi)存dump然后通過python自動拷貝到電腦生成ipa文件灭将。
1疼鸟、安裝frida
1.1、Mac安裝方式:
查看python版本庙曙,Mac都是自帶的空镜。
python -V
、python3 -V
、V
大寫-
查看pip版本吴攒。
pip -V
V
大寫
安裝pip张抄。
$sudo easy_install pip
安裝frida。
$sudo pip install frida-tools
-
frida-ps
查看電腦的進(jìn)程 -
frida-ps -U
查看USB鏈接端的進(jìn)程洼怔,此時電腦可以不用登錄(SSH USB登錄)手機欣鳖,但是手機的Cydia必須要安裝Frida插件
1.2、iOS安裝方式:
1茴厉、添加源 http://build.frida.re
2泽台、安裝Frida
1.3、Mac配置ios-dump
下載腳本
git clone 網(wǎng)址矾缓;下載到當(dāng)前文件夾
$sudo git clone https://github.com/AloneMonkey/frida-ios-dump
進(jìn)入下載好的frida-ios-dump
目錄安裝依賴
$sudo pip install -r requirements.txt --upgrade
如果報沒有權(quán)限就加一個--user
$sudo pip install -r requirements.txt --upgrade --user
1.4怀酷、執(zhí)行
- 先要端口映射一下
usbConnect.sh
-
./dump.py Display name or Bundle identifier
eg:./dump.py 支付寶
- 會在當(dāng)前文件夾下生成一個砸過殼
.ipa
包 - 自己配置腳本之后就是:
dumpIPA.sh 微信