當前位置:
首頁 > 新聞 > 如何對iOS App進行打補丁和重新簽名

如何對iOS App進行打補丁和重新簽名

有沒有想過在非越獄設備上運行修改後的iOS二進位文件?比如,你可以使用該技術插裝app,以進行動態分析。又或者你需要進行GPS欺騙,從而可以在鎖區玩Pokemon,但又擔心越獄檢測。

福利來了,你可以按照以下過程對修改後的應用程序進行重新簽名,然後便可在自己的設備上運行該應用程序。注意,該技術僅適用於非FairPlay加密二進位文件(從應用商店獲取的app均為FairPlay加密)。

蘋果的配置和代碼簽名系統本身就讓人有點暈頭轉向,所以,對app進行重新簽名著實不易。只有在配置文件和代碼簽名頭完全正確的前提下,app才能在iOS中運行。

這要求我們了解很多概念——不同類型的證書、BundleID、應用程序ID、團隊標識符,以及如何使用蘋果的構建工具將它們綁定在一起。

總之,讓iOS運行未使用默認方式(XCode)構建的特殊二進位文件可謂一大挑戰。

我們需要使用的工具集包括optool、蘋果的構建工具及一些shell命令。要復現以下步驟,請下載UnCrackableiOS App Level 1。我們的目標是使無法破解的應用程序在啟動時載入FridaGadget.dylib,這樣我們便可使用Frida來插裝它。


獲取開發人員配置文件和證書

配置文件是由蘋果簽名的、將一個或多個設備上的代碼簽名證書列入白名單的plist文件。

換言之,這是蘋果明確允許你的應用程序在某些上下文中運行,比如在選定設備的調試模式下。配置文件還列出了授予你的應用程序的許可權。代碼簽名證書包含將用於進行實際簽名的私鑰。

下面提供了兩種獲取證書和配置文件的方法,具體使用哪一種要看你是不是已註冊的iOS開發人員。

方法一:使用iOS

開發人員帳戶

如果你之前使用Xcode開發和部署過app,那你已經擁有一個代碼簽名證書。使用安全工具列出你現有的簽名身份:

已註冊開發人員可以從蘋果DeveloperPortal獲取配置文件。這需要首先創建一個新的App ID,然後發布一個配置文件——從而讓該App ID可以在你的設備上運行。

對於重新打包的目的,選擇什麼App ID並不重要 – 你甚至可以重新使用一個現有的App ID。重要的是要有一個匹配的配置文件。確保你創建的是開發配置文件而不是分發配置文件,因為稍後需要將調試器附加到應用程序。

在下面的shell命令中,作者使用的是與其公司的開發團隊相關聯的自己的簽名身份。

作者創建了app-id「sg.vp.repackaged」,以及一個名為「AwesomeRepackaging」的配置文件,這便生成了一個名為「AwesomeRepackaging.mobileprovision」的文件——運行示例時改為你自己的文件名。

方法二:使用常規的iTunes

帳戶

即使你不是付費開發人員,蘋果也會給你分發一個免費的開發配置文件。你可以使用你的常規蘋果賬戶並通過Xcode獲取配置文件,只需要創建一個空iOS項目,然後從app容器提取embedded.mobileprovision,此過程詳情請參見ncc博客。

獲得配置文件後便可使用安全工具檢查其內容。除允許的證書和設備外,在配置文件中還可找到授予app的許可權。

稍後的代碼簽名需要這些,所以按以下所示將這些提取到一個單獨的plist文件。還要看一下文件的內容,檢查一下是否有任何異常。

注意應用程序標識符(App ID),其是團隊ID(LRUD9L355Y)和Bundle ID(sg.vantagepoint.repackage)的組合。該配置文件僅對具有此特定app id的應用程序有效。

「get-task-allow」鍵也很重要——當設置為「true」時,允許其他進程(比如調試伺服器)附加到應用程序(因此,在分發配置文件中應設置為「false」)。


其他準備

為了使我們的應用程序在啟動時載入一個附加的庫,我們需要通過一定方法將額外的載入命令插入到主可執行文件的Mach-O頭中。我們使用optool來自動化這個過程。

我們還將使用ios-deploy,這個工具可以讓我們在不使用Xcode的情況下部署和調試iOS應用程序:

要遵循以下示例,你還需要FridaGadget.dylib:

除了上面列出的工具,我們還要使用OS X和Xcode附帶的標準工具(確保你已安裝Xcode命令行開發工具)。


打補丁、重新打包及重新簽名

現在要步入正題了。IPA文件實際上是ZIP文件,所以要使用任意一款zip工具解壓。然後,將FridaGadget.dylib複製到應用程序目錄中,然後使用optool將載入命令添加到「UnCrackable Level 1」二進位文件。

這種明顯的改動無疑會使主可執行文件的代碼簽名無效,因此這不能在非越獄設備上運行。你需要替換配置文件,然後使用配置文件中列出的證書對主可執行文件和FridaGadget.dylib進行簽名。

首先,我們將自己的配置文件添加到包中:

接下來,我們需要確保Info.plist中的Bundle ID與配置文件中指定的匹配。這樣做的原因是codesign將在簽名期間從Info.plist讀取Bundle ID -錯誤的值將導致簽名無效。

最後,我們使用codesign工具對這兩個二進位文件進行重新簽名:


安裝並運行應用程序

一切已經準備就緒,可以運行修改後的app了。按照以下方式在設備上部署並運行app。

如果一切順利,那麼應用程序應該在調試模式下在設備上啟動——附加有lldb。Frida現在也應該能夠附加到應用程序了。你可以使用frida-ps命令來驗證這一點。

現在便可使用Frida像平常一樣插裝app了。


故障排除

如果出現錯誤(通常會發生錯誤),那最有可能是因為配置文件和代碼簽名頭之間不匹配,在這種情況下,最好閱讀官方文檔並了解整個系統的工作原理。

參考來源:http://www.vantagepoint.sg/blog/85-patching-and-re-signing-ios-apps


*本文作者:華為未然實驗室,轉載請註明來自Freebuf.COM


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 FreeBuf 的精彩文章:

手電筒驚現海量Root病毒:私自扣費、強裝病毒、惡意彈窗
SHA-1碰撞攻擊將會對我們產生怎樣的現實影響?

TAG:FreeBuf |

您可能感興趣

大打補貼戰 Apple Pay能在中國翻身嗎?
Apple Watch 3蜂窩網路存在缺陷 還未上市就打補丁
[圖]尷尬:大學畢業典禮驚現Windows 7打補丁
科技早報 – Apple Pay大打補貼戰、Skype改版遭用戶抵制 – 20170717
如何快速黑掉一台沒打補丁的Windows電腦?
Equifax因Struts漏洞未及時打補丁 面臨4500億美元集體訴訟賠償
iOS11三打補丁,膠水粘合傷口何時能實現?
WiFi安全協議曝出嚴重漏洞 蘋果谷歌微軟都要打補丁
MIT研究人員發明漏洞修復系統,可自動給代碼打補丁
一夜之間Wi-Fi都不安全了?蘋果谷歌微軟都要打補丁!
快打補丁!微軟一口氣修復49個安全漏洞:XP赫然在列
WiFi漏洞幾乎影響所有無線設備 微軟蘋果將打補丁
「打補丁」恐不成,把職稱評定扳回正軌得「放大招」
美國瀕海戰鬥艦「打補丁」,從科幻墜入現實
這國放風造航母幫美打補丁,專家稱無非多出四個靶子
美軍被菲律賓撞沉的軍艦要1年後才能露面,艦體被打補丁?
4根鋼樑打補丁!美軍首曝9000噸被撞艦艇水下受損照
中國女足0-1朝鮮!她們月薪1千、球衣打補丁,可能無緣世界盃
拉米雷斯一錘定音!蘇寧7號隊長的球鞋居然打補丁:彷彿周星馳