2012-08-13 41 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