2011-10-24 81 views
5

我一直在iPhone上玩弄/調試/反彙編二進制文件。iPhone可執行文件(MACH-O)解密

第一個障礙是二進制文件被加密,而拆裝者無法讀取它們。這可以通過從gdb轉儲解密的文件內容來克服。

我的問題是關於二進制文件的解密對於具有在LC_ENCRYPTION_INFO部分encryption_id所有的Mach-O可執行文件(這是在程序開始時飛完成),設置爲1

  1. 是有爲你解密文件的工具?任何建議?
  2. 有沒有關於過程如何工作的信息?顯然它是 AES加密?使用什麼鍵?自己的程序很容易複製你的 自己的程序嗎?

感謝您的指點!

+0

所以,你問的是如何破解其他開發人員的應用程序是什麼?我不確定是否StackOverflow是問這個問題的正確地方,因爲它的主要焦點是關於開發事情 - 而不是逆向工程由其他開發的應用程序。我認爲你在黑客或盜版網站可能會更好。 –

+2

真的嗎?我認爲堆棧溢出也有反向工程聲音! (就像你的堆棧溢出太多的數據一樣......) 更爲嚴肅的說法,我認爲這對所有開發人員來說都是很好的常識,而不是某種禁忌地下的東西。 – pracheta986919

+0

user986919是對的,如果不知道黑客會如何破解它,你就無法在你的應用中實現安全。如果通常編譯的應用程序可以進行反向設計,則可以自行對其進行一些混淆處理。 – Daniel

回答

7

約黑客/破解的/ etc拋開道德問題,讓我們來討論細節:

  • 在OS X上的二進制解密是由執行不偷的MacOS X.Kext(親切地稱爲DSMOS)。
  • 在iOS中,二進制解密由FairPlay kext執行。

    在這兩種情況下,內核Mach-O加載程序都對此負責。如果你真的需要詳細信息,它是處理解密的Apple Protect尋呼機。在XNU的說法中,「pager」是一個組件,它負責獲取VM頁面並從後臺存儲中檢索它們(交換,內存映射文件等)。這是蘋果保護尋呼機呼籲KEXT

    有一個偉大的書涵蓋了核心細節(上述兩個一) - http://www.amazon.com/Mac-OS-iOS-Internals-Apples/dp/1118057651

    正如你正確地指出,這種加密是很容易被擊敗 - 越獄設備上(或具有root權限的PC),您可以使用Mach VM API來讀取解密的圖像。這在上面的書中已經提到了,並且有一個示例工具可以實現這一點(其他VM技巧)。或者,Stefan Esser有一個簡單的工具,它使用DYLD_INSERT_LIBRARIES通過在加載時將簡單的.dylib注入進程地址空間來解密二進制文件。 github.com> stefanesser> dumpdecrypted。

希望這有助於

TG