2014-02-11 93 views
5

因此我知道在越獄的iOS設備上可以將dylib注入正在運行的進程並設置/掛接系統功能。我想知道在非越獄設備上是否可以在任何鏈接或運行時間設置系統功能,假設我是構建應用程序的設備?也許在Linux上使用dlfcn和LD_PRELOAD的等價物?連接時在iOS上的掛鉤系統(libc)功能

一個示例:我想要構建一個應用程序,該應用程序使用各種Cocoa/Core Foundation抽象用於文件系統訪問幷包裝底層的打開/讀取/寫入/關閉調用。我知道在Objective-C中混合使用,但我正在尋找libc級別的東西,以便捕獲所有內容。這是爲了測試/調試相關的東西,所以它不需要App Store友好。謝謝!

+0

IIRC如果您定義的函數名稱與外部函數庫中函數的名稱相同,則「本地」名稱將影響庫中的一個(在鏈接時)。 – 2014-02-11 18:53:05

+0

您是否實現了掛鉤系統功能? – bikram990

回答

0

不,這是不可能的(據我所知)在非越獄的iOS設備上。所有傳統形式的動態加載(插入,dlopen/dlsym等)已被刪除。

由於您提到您的需求與測試/調試有關,因此如果問題存在於模擬器上,您可能需要嘗試使用DTrace。您可以在模擬器上使用DTrace,但不能在真實的iOS設備上使用。