2012-05-14 80 views
12

我已經決定在花很多時間在Google之後花費這個問題。但我無法爲我的問題得到答案。以下是詳細信息:是否可以編輯和重新編譯iOS二進制文件?

我有一個應用程序,最近發佈到Cydia。它已被其他人破解並將其發佈到洪流站點。有趣的部分是我內部有一個二進制校驗和驗證機制,他們能夠破解整個東西,並根據他們對二進制文件所做的更改創建新的校驗和文件。他們編輯了兩個函數並反編譯併發布到種子。

所以我用IDA Pro做了一些研究,看到它可以看到函數和類的實際實現。但爲了編輯功能,他們必須找到該功能的地址並通過HEX EDITOR進行編輯。這一部分讓我感到困惑,有沒有人幫助我呢?我不想讓它變得「不可撼動」:) ..我想這不是那麼容易。 :)但我真的想知道他們如何入侵? :)

我的問題是如何編輯iOS二進制文件中的函數並重新編譯它?例如,我在我的一個類中有以下方法。

- (id) getSomething { 

    return @"Something"; 
} 

我想編輯這個函數的返回值。是否有可能?

回答

6

通常,你不要「重新編譯」它。只需將該文件提供給IDA,查找字符串,函數調用或您正在查找的任何內容,然後使用十六進制編輯器或類似語言在彙編級別編輯文件。在大多數情況下,只需將條件跳轉變爲無條件跳轉或nop(無操作)就足夠了。如果你想改變返回值,你必須付出更多的努力,但根據我的經驗,你可以在二進制文件中編輯字符序列,如果它被指定爲常量或初始值 - 或者你只是寫一個完全新的功能,並將它的彙編代碼「複製」到原始文件中。你只需要確保你的新功能不會佔用比原來更多的空間 - 否則一切都變得更加複雜。 我希望這就是你要求的,否則只是告訴我們你正在談論哪個應用程序,我們可以深入瞭解它:)

+1

感謝花了一些時間在這個頁面上回答我的問題.. :)所以,我不能透露其在公司工作的名稱和產品是爲公司開發的。對不起。關於替換匯編代碼,我還有一個問題。我使用IDA Pro試用版,所以你說的完整版可以用來代替代碼? – IndoThaiGeek

+0

還是使用任何其他應用程序? – IndoThaiGeek

+0

不知道試用版/完整版之間的差異,但我從未使用IDA編輯二進制文件。在Windows上,我使用Hiew。 – jimpic

相關問題