iOS使用什么函数/系统调用来读写文件

时间:2012-08-13 07:11:08

标签: objective-c ios swizzling

我想拦截iOS上的文件读/写,为我的某些应用提供透明的加密/解密功能。​​

我知道我可以调用各种SDK方法来读取/写入文件来执行此操作,但这需要大量的工作并且容易出错(我可能会错过一些方法,导致我的应用程序崩溃/行为异常) 。

如果所有这些方法都使用了一些常见的系统调用/函数,那么我宁愿调整它并节省一些努力+使其更加万无一失。有没有这样的共同切入点?

PS:在此处接受应用程序商店不是一个标准,因为所有这些应用程序都是用于内部企业部署。

谢谢!

1 个答案:

答案 0 :(得分:3)

为此,你需要一个越狱设备。

POSIX系统调用readwrite可以被劫持(here's how - 不是特定于iOS的,但无论如何都是Darwin ......)

您还可以使用MobileSubstrate(http://iphonedevwiki.net/index.php/MobileSubstrate)来挂接C标准库中的read()和write()函数,该函数几乎专门用于实现许多基本框架和方法(包括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);