iOS-逆向22-砸殼

《iOS底層原理文章匯總》
上一篇文章《iOS-逆向21-越獄&OpenSSH》介紹了越獄&OpenSSH歉备,本文介紹砸殼傅是。

圖片.png

1.iOS9的系統(tǒng)完美越獄恢復,拷貝unjailbreak.sh到越獄手機根目錄下蕾羊,只是sh unjailbreak.sh手機重啟后喧笔,恢復為非越獄環(huán)境

圖片.png

2.砸殼原理

應用加殼(加密)
提交給Appstore發(fā)布的App,都經(jīng)過官方保護而加密龟再,這樣可以保證機器上跑的應用是蘋果審核過的书闸,也可以管理軟件授權(quán)。經(jīng)過App Store加密的應用利凑,我們無法通過Hopper等反編譯靜態(tài)分析浆劲,也無法Class-Dump嫌术,在逆向分析過程中需要對加密的二進制文件進行解密才可以進行靜態(tài)分析,這一過程就是大家熟知的砸殼(脫殼)
應用砸殼(解密)
靜態(tài)砸殼
靜態(tài)砸殼就是在已經(jīng)掌握和了解到了殼應用的加密算法和邏輯后在不運行殼應用程序的前提下將殼應用程序進行解密處理梳侨。靜態(tài)脫殼的方法難度大蛉威,而且加密方發(fā)現(xiàn)應用被破解后就可能會改用更加高級和復雜的加密技術(shù)

動態(tài)砸殼
動態(tài)砸殼就是從運行在進程內(nèi)存空間中的可執(zhí)行程序映像(image)入手日丹,來將內(nèi)存中的內(nèi)容進行轉(zhuǎn)儲(dump)處理來實現(xiàn)脫殼處理走哺。這種方法實現(xiàn)起來相對簡單,且不必關(guān)心使用的是何種加密技術(shù)哲虾。

圖片.png

越獄的手機能訪問進程丙躏,從而能獲取到進程中的MachO文件,進程中的MachO是沒有加密的
圖片.png

3.Clutch

Clutch是由KJCracks開發(fā)的一款開源砸殼工具束凑。工具支持iPhone晒旅、iPod Touch、iPad汪诉,該工具需要使用iOS8.0以上的越獄手機應用废恋。

I.安裝,下載Clutch 2.0.4版本,是通用二進制文件
官網(wǎng)

圖片.png

II.拷貝Clutch 2.0.4文件到手機中scp -P 12345 ./Clutch-2.0.4 root@127.0.0.1:/var/root/Clutch,拷貝的同時改Clutch 2.0.4文件為Clutch
圖片.png

III.給Clutch文件增加可執(zhí)行權(quán)限chmod +x Clutch
圖片.png

./Clutch -i查看安裝的軟件
image

IV.砸殼./Clutch -d 2,砸殼抖音
./Clutch -d 4,砸殼QQ,在手機/private/var/mobile/Documents/Dumped路徑下有砸殼好的ipa包扒寄,很明顯如下砸殼失敗了
圖片.png

V.從越獄手機中拷貝QQ的MachO文件到Mac中

scp -P 12345 root@127.0.0.1:/var/mobile/Containers/Bundle/Application/2018C47F-40F6-4FC3-B121-68472B7897EE/QQ.app/QQ ./QQ
image

image

otool -l QQ,查看可執(zhí)行文件QQ結(jié)構(gòu)


image

越獄插入鱼鼓,不污染三方應用的插件
非越獄的注入

4.在越獄手機中手動插入動態(tài)庫

I.新建工程,里面注入Inject動態(tài)庫,拷貝出Inject.framework到新建的工程目錄下,再拷貝到手機中

圖片.png

image

image

抖音路徑:/var/mobile/Containers/Bundle/Application/21CF3978-5308-4420-A7AA-615089512B70/Aweme.app/Aweme
QQ路徑:/var/mobile/Containers/Bundle/Application/2018C47F-40F6-4FC3-B121-68472B7897EE/QQ.app/QQ
微信路徑:/var/mobile/Containers/Bundle/Application/C4C23D7D-6554-4C76-BE88-D01FECE8B873/WeChat.app/WeChat
抖音極速版路徑:/var/mobile/Containers/Bundle/Application/A0CAA998-D2FC-4D91-9A83-384E9ED235C3/AwemeLite.app/AwemeLite
II.注入Inject動態(tài)庫到目標應用(抖音),在iOS9.3以后插入到哪一個進程都會出現(xiàn)kill 9,要切換成mobile用戶
我的iPhone6是iOS9.2.1的系統(tǒng)该编,root和mobile用戶權(quán)限都能注入成功F尽!
DYLD_INSERT_LIBRARIES=Inject.framework/Inject /var/mobile/Containers/Bundle/Application/21CF3978-5308-4420-A7AA-615089512B70/Aweme.app/Aweme
image

image

注入QQ也可以课竣,但會報一個錯嘉赎,注入重簽的微信也會報一個錯。
DYLD_INSERT_LIBRARIES=Inject.framework/Inject /var/mobile/Containers/Bundle/Application/2018C47F-40F6-4FC3-B121-68472B7897EE/QQ.app/QQ
圖片.png

image

換手機試下iPhone 8p,
微信路徑:/var/containers/Bundle/Application/65FADAD7-34CF-4EE9-B548-6403C1D757CF/WeChat.app/WeChat
支付寶路徑:/var/containers/Bundle/Application/C1ECB91B-F3A7-4C5E-BBE6-4F9A82F83126/AlipayWallet.app/AlipayWallet
InjectDemo路徑:/var/containers/Bundle/Application/50A02104-6D24-4B28-BE7D-218EC5E25914/InjectDemo.app/InjectDemo
scp -r -P 12345 Inject.framework root@localhost:/var/root
image

此時注入DYLD_INSERT_LIBRARIES=Inject.framework/Inject /var/containers/Bundle/Application/65FADAD7-34CF-4EE9-B548-6403C1D757CF/WeChat.app/WeChat會報錯kill 9錯誤于樟,因為iPhone 8p是iOS11.0的系統(tǒng),切換mobile用戶su mobile
iOS 9.3以后報錯killed:9公条,切換mobile用戶,注入微信還報錯,注入支付寶也報錯迂曲,注入自己的進程InjectDemo成功
圖片.png

DYLD_INSERT_LIBRARIES=Inject.framework/Inject /var/containers/Bundle/Application/50A02104-6D24-4B28-BE7D-218EC5E25914/InjectDemo.app/InjectDemo
image

III.越獄設(shè)備中赃份,其他進程要插入插件、動態(tài)庫奢米,需利用環(huán)境變量DYLD_INSERT_LIBRARIES抓韩,任何一個進程只要DYLD_INSERT_LIBRARIES中有東西會立刻馬上去加載執(zhí)行了,若想插入自己寫的代碼鬓长,可以封裝成插件

5.dumpdecrypted

Github開源工具谒拴。 dumpdecrypted這個工具就是通過建立一個名為dumpdecrypted.dylib的動態(tài)庫,插入目標應用實現(xiàn)脫殼涉波。

I.make編譯生成dumpdecrypted.dylib和dumpdecrypted.o兩個文件

image

II.拷貝dumpdecrypted.dylib到iPhone6越獄機根目錄下scp -P 12345 dumpdecrypted.dylib root@127.0.0.1:/var/root
移動到手機/var/mobile目錄下英上,因為mobile用戶執(zhí)行dump命令時要有寫的權(quán)限炭序,而mobile用戶在/var/root目錄下是沒有寫的權(quán)限的,所以要拷貝到mobile用戶有寫的權(quán)限的目錄下/var/mobile執(zhí)行命令,才能成功dump出來
mv dumpdecrypted.dylib /var/mobile/苍日,切換為mobile用戶
DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/mobile/Containers/Bundle/Application/21CF3978-5308-4420-A7AA-615089512B70/Aweme.app/Awemedump成功抖音Aweme.decrypted
image

將砸殼后的抖音Aweme.decrypted拷貝到Mac桌面
scp -P 12345 root@127.0.0.1:/var/mobile/Aweme.decrypted ~/Desktop/
image

圖片.png

6.frida-ios-dump

A.Mac安裝方式

該工具基于frida提供的強大功能通過注入js實現(xiàn)內(nèi)存dump然后通過python自動拷貝到電腦生成ipa文件惭聂。

I.查看python版本python -V
II.查看pip版本 pip -V
安裝pip:sudo easy_install pip,若安裝pip3遇到如下報錯 sudo easy_install pip3

Password:
Searching for pip3
Reading https://pypi.org/simple/pip3/
Couldn't find index page for 'pip3' (maybe misspelled?)
Scanning index of all packages (this may take a while)
Reading https://pypi.org/simple/
No local packages or working download links found for pip3
error: Could not find suitable distribution for Requirement.parse('pip3')

解決辦法

curl -O https://bootstrap.pypa.io/get-pip.py
sudo python3 get-pip.py
image

遇到警告,sudo后面加-H

WARNING: The directory '/Users/cloud/Library/Caches/pip' or its parent directory is not owned or is not writable by the current user. The cache has been disabled. Check the permissions and owner of that directory. If executing pip with sudo, you should use sudo's -H flag.
圖片.png

III.sudo pip install frida-tools\sudo pip3 install frida-tools
若報警告WARNING: The directory '/Users/cloud/Library/Caches/pip' or its parent directory is not owned or is not writable by the current user. The cache has been disabled. Check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.前面加sudo -H pip3 install frida-tools

image

B.iOS安裝方式

I.添加源https://build.frida.re,安裝frida

圖片.png

進入/opt/MonkeyDev/bin目錄執(zhí)行frida-ps列出所有進程


image

frida-ps -U此時列出USB連接的進程

image

frida的作用:
/opt/MonkeyDev/bin下直接進入具體應用
frida -U 微信
報錯是因為我的手機里面安裝了一個正版微信,一個砸殼微信

Failed to spawn: ambiguous name; it matches: 微信 (pid: 5952), 微信 (pid: 3456)

frida -U 支付寶相恃,前提是支付寶在前臺運行辜纲,可正常進入,并能執(zhí)行frida語句拦耐,語法見官網(wǎng)doc

圖片.png

執(zhí)行ObjC的打印
圖片.png

C.dump-ios-ipa,以微信為例耕腾,dump出微信.ipa包

I.Install frida on device,添加源,在越獄iOS設(shè)備中安裝frida杀糯,如上問B.iOS安裝方式
II.sudo pip3 install -r requirements.txt --upgrade


圖片.png

III.開啟端口映射扫俺,執(zhí)行sh usbConnect.sh或iproxy 12345 22,為什么要有這一步,試想固翰,因為最終要從越獄iPhone設(shè)備上拷貝出砸殼后的.ipa包出來狼纬,必定要操作手機,需要連接Mac到iPhone骂际,需要端口號映射


圖片.png

IV.執(zhí)行./dump.py 微信疗琉,若遇到
Traceback(most recent call last):
File "./dump.py",line 11,in <module>
import frida
ImportError:No module named frida

解決辦法是將dump.py中的python改為python3,python版本是2改為python2,是python3就改為python3方援,通過python --version查看當前版本


圖片.png

V.若遇到端口報錯没炒,要先開啟端口映射執(zhí)行sh usbConnect.sh或iproxy 12345 22,同時要求改dump.py文件中的User(用戶名)、Password(密碼)犯戏、Host(主機名)和Port(端口號)送火。

[Error None] Unable to connect to port 2222 on 127.0.0.1or ::1
Try specifying -H/--hostname and/or -p/--port
圖片.png

VI.執(zhí)行./dump.py 微信,dump成功微信.ipa包在dump.py同級目錄下


圖片.png

圖片.png
圖片.png

VII.若想全局使用dump.py則將dump.py和dump.js兩個文件拷貝到Monkey目錄下先匪,并在.zshrc文件中將Monkey目錄配置環(huán)境變量种吸,通過which dump.py命令可查看dump.py是/opt/MonkeyDev/bin/dump.py目錄中的dump.py


圖片.png

圖片.png

圖片.png

D.默認越獄手機中不支持中文輸入,拷貝.inputrc到手機中

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

圖片.png

set convert-meta off
set output-meta on   允許向終端輸出中文
set meta-flag on
set input-meta on   允許向終端輸入中文
圖片.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末呀非,一起剝皮案震驚了整個濱河市坚俗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌岸裙,老刑警劉巖猖败,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異降允,居然都是意外死亡恩闻,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門剧董,熙熙樓的掌柜王于貴愁眉苦臉地迎上來幢尚,“玉大人破停,你說我怎么就攤上這事∥臼#” “怎么了真慢?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長理茎。 經(jīng)常有香客問我黑界,道長,這世上最難降的妖魔是什么功蜓? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任园爷,我火速辦了婚禮宠蚂,結(jié)果婚禮上式撼,老公的妹妹穿的比我還像新娘。我一直安慰自己求厕,他們只是感情好著隆,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著呀癣,像睡著了一般美浦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上项栏,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天浦辨,我揣著相機與錄音,去河邊找鬼沼沈。 笑死流酬,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的列另。 我是一名探鬼主播芽腾,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼页衙!你這毒婦竟也來了摊滔?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤店乐,失蹤者是張志新(化名)和其女友劉穎艰躺,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體眨八,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡腺兴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了踪古。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片含长。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡券腔,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出拘泞,到底是詐尸還是另有隱情纷纫,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布陪腌,位于F島的核電站辱魁,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏诗鸭。R本人自食惡果不足惜染簇,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望强岸。 院中可真熱鬧锻弓,春花似錦、人聲如沸蝌箍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽妓盲。三九已至杂拨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間悯衬,已是汗流浹背弹沽。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留筋粗,地道東北人策橘。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像亏狰,于是被迫代替她去往敵國和親役纹。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容