您好,登錄后才能下訂單哦!
當(dāng)程序發(fā)生崩潰并有機(jī)會(huì)獲取到崩潰堆棧時(shí),還原崩潰堆棧從而定位錯(cuò)誤顯得非常重要。用戶符號(hào)的還原非常簡(jiǎn)單,因?yàn)樵诖虬?APP 時(shí),會(huì)生成對(duì)應(yīng)的符號(hào)文件(以 .dSYM 結(jié)尾)。而對(duì)于系統(tǒng)符號(hào),Apple 并沒(méi)有提供對(duì)應(yīng)的符號(hào)文件下載,所以需要自己解析。本文就簡(jiǎn)單聊聊從 iOS 固件獲取系統(tǒng)庫(kù)符號(hào)的方法。
有很多提供固件下載服務(wù)的站點(diǎn),比較出名的是: theiphonewiki.com 。這個(gè)站點(diǎn)同時(shí)也維護(hù)了用于固件解密的 key,
如圖1所示:
圖1:theiphonewiki.com 維護(hù)的 iOS 9.x 版本的固件解密 key
在圖1中,藍(lán)色字體部分表示對(duì)應(yīng)的固件 key 存在,紅色字體表示對(duì)應(yīng)的固件 key 暫時(shí)不可得,所以 theiphonewiki 上只有極少數(shù)的 arm64 版本的固件是可以解密的。
固件(以 .ipsw 結(jié)尾)文件其實(shí)是一個(gè)壓縮包,解壓后得到的 3 個(gè) dmg 文件中,占用空間最大的那個(gè)就包含需要的系統(tǒng)庫(kù)。而這個(gè)文件是 AES 加密的,解密這個(gè)需要 Root Filesystem Key。例如,iPhone5,4(即 iPhone 5c )固件的解密 key
如圖2所示:
圖2:iPhone5,4 固件的 Root Filesystem 解密 Key
獲取到 key 后,就可以使用 VFDecrypt 工具完成最終的解密,當(dāng)然也有很多更方便的 UI 集成工具或者 python 腳本,比如:iDecrpyptIt。
從 iPhone OS 3.1 開(kāi)始,所有的系統(tǒng)庫(kù)都打包成一個(gè)文件:dyld_shared_cache_xxx ,其中 xxx 表示具體的架構(gòu),此文件位于:/System/Library/Caches/com.apple.dyld 目錄。
dyld_shared_cache_xxx 文件的解壓可以使用 dyld 中的代碼,
步驟如圖3所示:
圖 3:dyld_shared_cache_xxx 文件解密方法
最后得到的目錄中就包含了此固件的系統(tǒng)庫(kù)文件,如 UIKit.framework 等。
theiphonewiki 上提供的解密 key 并沒(méi)有 arm64 架構(gòu)的,如果要解密 iPhone 5s 及以后產(chǎn)品對(duì)應(yīng)的固件,需要通過(guò)其它渠道或者自己手動(dòng)獲取解密 key 。關(guān)于如何手動(dòng)獲取解密 key,本文并沒(méi)有涉及,這一話題筆者也還在研究,歡迎大家指正。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。