我想拦截iOS上的文件读/写,为我的某些应用提供透明的加密/解密功能。
我知道我可以调用各种SDK方法来读取/写入文件来执行此操作,但这需要大量的工作并且容易出错(我可能会错过一些方法,导致我的应用程序崩溃/行为异常) 。
如果所有这些方法都使用了一些常见的系统调用/函数,那么我宁愿调整它并节省一些努力+使其更加万无一失。有没有这样的共同切入点?
PS:在此处接受应用程序商店不是一个标准,因为所有这些应用程序都是用于内部企业部署。
谢谢!
答案 0 :(得分:3)
为此,你需要一个越狱设备。
POSIX系统调用read
和write
可以被劫持(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);