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 ++標準ライブラリなども)-したがって、ほとんどの場合、syscallを直接変更する必要はありません。例:

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 に答える