2

OSXでメモリから実行可能ファイルを実行することについて何か知っている人はいますか? このようなもの:

char *exeFile[size];
loadFromFile(exeFile, "/path/to/data");
execute(exeFile);

セキュリティ上の理由からそれを行いたいと思います。たとえば、起動前にexeを暗号化して復号化することが可能です。

4

1 に答える 1

4

はい、できますが、複雑です。現在、動作するコードにアクセスすることはできませんが、それを使用している/使用したことがある人は知っています。キーは非推奨の "NSCreateObjectFileImageFromMemory()" ですが、Skype のようないくつかの大きなアプリがそれを使用していると評価されているため、すぐに消えることはないでしょう (YMMV)。

vm_allocate を使用して、ページサイズの倍数のメモリ バッファーを割り当てる必要があります。現在のプロセスと同じアーキテクチャの mach-o 実行可能ファイルをそこにコピーします。オブジェクト画像を返す NSCreateObjectFileImageFromMemory() を呼び出します。次に、NSLinkModule、NSLookupSymbolInModule、および NSAddressOfSymbol を連続して呼び出します。最後のものは、呼び出す実際の関数ポインターを取得します。

これにより、知っておくべきことのほとんどが得られるはずです。検索すると、それを実行するコードも見つかる場合があります。幸運を!

于 2012-08-02T00:36:45.877 に答える