2012-08-13 44 views
1

我想攔截iOS上的文件讀/寫,爲我的某些應用程序提供透明加密/解密功能。iOS使用什麼函數/系統調用來讀取和寫入文件

我知道我可以調整各種SDK方法讀/寫文件來做到這一點,但這需要很多努力工作,並且容易出錯(我可能會錯過某些方法的調整,導致我的應用程序崩潰/行爲不端)。

如果所有這些方法都使用了一些常用的系統調用/函數,那麼我寧願調整它,節省一些辛苦的工作+使其更加萬無一失。有沒有這種共同的入口點?

PS:由於所有這些應用程序都用於企業內部部署,因此接受進入應用商店並不是一個標準。

謝謝!

+0

你可能會考慮在[內置數據保護(https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/AdvancedAppTricks/AdvancedAppTricks.html)展示了iOS(向下滾動一點),而不是重新發明輪子。在企業部署中,您應該能夠強制執行密碼要求,從而啓用內置加密。 – rickster 2013-02-17 18:10:46

+0

呃,錯過了實際的鏈接... [這裏我們去](https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/AdvancedAppTricks/AdvancedAppTricks.html)。 – rickster 2013-02-17 18:13:39

回答

3

爲此,您需要越獄設備。

有POSIX的系統調用readwrite這可以被劫持(here's how - 不是的iOS特有的,但無論如何達爾文...)

您還可以使用MobileSubstrate有(http://iphonedevwiki.net/index.php/MobileSubstrate)掛鉤的read()和write()函數在C標準libraty中幾乎專門用於實現許多基本框架和方法(包括CocoaTouch - Foundation,CoreFoundation,實際上還有一些C和C++標準庫等)。 - 所以很可能你不需要直接修改系統調用。例如:

static size_t (*orig_write)(int fd, void *buf, size_t n); 

size_t hijacked_write(int fd, void *buf, size_t n) 
{ 
    // do something, then 
    return orig_write(fd, buf, n); 
} 

// in some initialization: 
MSHookFunction(write, hijacked_write, (void **)&original_write); 
+0

謝謝。 PS:我不需要越獄才能做到這一點。我可以自己編寫令人眼花繚亂的代碼,並將其用於我的應用程序。我無法將其提交到應用商店。 – Karthik 2012-08-13 07:28:58

+0

@Karthik你**做**需要JB'en。 MSHookFunction需要內核補丁。 – 2012-08-13 07:30:08

+0

對不起,只是意識到我們需要修補內核,因爲我們需要將我們的自定義邏輯寫入內存頁面,該內存頁面需要是可寫入和可執行的;默認的內核不允許:( – Karthik 2012-08-13 07:45:57