1

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

我知道我可以调配各种 SDK 方法来读/写文件来做到这一点,但这需要大量的努力并且容易出错(我可能会错过调配某些方法,导致我的应用程序崩溃/行为不端)。

如果所有这些方法都使用了一些通用的系统调用/函数,那么我宁愿对其进行调整并节省一些艰苦的工作+使其更加万无一失。有没有这样的共同切入点?

PS:应用商店的接受度不是这里的标准,因为所有这些应用程序都是用于内部企业部署的。

谢谢!

4

1 回答 1

3

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

有 POSIX 系统调用read并且write可以被劫持(这里是如何- 不是特定于 iOS,但无论如何是达尔文......)

您还可以使用 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);
于 2012-08-13T07:25:47.493 回答