Frida
Frida-ios-dump基于Frida(一款跨平臺(tái)的輕量級(jí)的Hook框架)提供的強(qiáng)大的功能伪货,通過(guò)注入JS實(shí)現(xiàn)內(nèi)存dump溪食,然后利用Python腳本自動(dòng)將內(nèi)存復(fù)制到macOS,從而生成最終的脫殼后的ipa文件受啥。
Frida-ios-dump的原理和dumpdecrypted一樣注暗,都是通過(guò)把內(nèi)存匯總已解密的數(shù)據(jù)dump出來(lái)再修復(fù)mach-O,dan dumpdecrypted僅能dump主程序季眷,對(duì)于框架需要自行修改源代碼才能完成冕臭,操作比較麻煩腺晾。Frida-ios-dump提供的強(qiáng)大功能允許我們一鍵快速完成脫殼。
使用Frida脫殼要求越獄設(shè)備上安裝Frida插件辜贵。具體操作步驟如下:
1.首先Cydia中添加源Frida源:https://build.frida.re
2.搜索并安裝對(duì)應(yīng)版本的Frida丘喻。筆者的越獄iPhone是64位的,iOS 版本是10.13.5念颈,所以下載并安裝了Frida for pre-A12 devices
3.Mac上在github上下載Frida-ios-dump:https://github.com/AloneMonkey/frida-ios-dump
4.進(jìn)入本地的Frida-ios-dump目錄下執(zhí)行sudo pip install -r requirements.txt --upgrade
來(lái)安裝python依賴(lài)
注意
:如果這一步安裝Python依賴(lài)失敗:可以嘗試手動(dòng)逐個(gè)安裝requirements.txt中的python依賴(lài)庫(kù)
5.mac終端執(zhí)行iproxy 2222 22连霉。把Mac上的2222端口映射到iPhone的22榴芳。前提是要保證此時(shí)iPhone已經(jīng)和Mac通過(guò)usb進(jìn)行了連接
注意
:如果這一步出現(xiàn)command not found:iproxy嗡靡。說(shuō)明Mac本地還沒(méi)有iproxy。只需終端執(zhí)行brew install usbmuxd窟感。在安裝usbmuxd的過(guò)程中iproxy會(huì)被自動(dòng)安裝讨彼。安裝好后執(zhí)行iproxy 2222 22
6.電腦當(dāng)前目錄下繼續(xù)執(zhí)行./dump.py -l
命令。列出iPhone上當(dāng)前的所有應(yīng)用
7.終端執(zhí)行./dump.py bundleId
即可對(duì)app進(jìn)行脫殼柿祈。
注意
:這一步需要我們把a(bǔ)pp啟動(dòng)
8.脫殼成功后哈误,會(huì)在電腦的當(dāng)前目錄新增一個(gè)ipa文件。該文件就是脫殼后的APP包躏嚎。
分離架構(gòu)
我們最終脫殼出的二進(jìn)制文件和使用的越獄設(shè)備有關(guān)蜜自。即arm64的越獄設(shè)備只能脫殼出arm64的可執(zhí)行文件。Mach-O通常是胖二進(jìn)制格式卢佣,也就是一個(gè)Mach-O文件包含多種架構(gòu)重荠,比如:arm64、armv7虚茶、armv7s等戈鲁。胖二進(jìn)制的目的是為了支持更多架構(gòu)的iPhone。關(guān)于每款iPhone的架構(gòu)可以自行Google嘹叫。
搞過(guò)靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)的開(kāi)發(fā)者對(duì)于分離架構(gòu)應(yīng)該并不陌生婆殿。在合并和分離二進(jìn)制文件的時(shí)候,我們通常使用lipo命令罩扇。lipo是macOS自帶的工具婆芦,其功能非常強(qiáng)大。下面列舉了lipo命令常用的幾個(gè)命令:
# 查看可執(zhí)行文件的架構(gòu)信息
命令格式:lipo -info Mach-O文件
# lipo -info WeChat
# 分離出某種特定架構(gòu)
命令格式:lipo mach-O文件 -thin 架構(gòu)類(lèi)型 -output 分離的mach-O文件
# lipo WeChat -thin arm64 -output WeChat_arm64
# 合并多種架構(gòu)
命令格式:lipo mach-O文件1 mach-O文件2 -output 合成的mach-O文件
# lipo WeChat_arm64 WeChat_armv7 -output WeChat
補(bǔ)充:查看可執(zhí)行文件架構(gòu)還可以使用file命令:
file Mach-O文件
例如:file WeChat