私は MacOSX 10.4 (tiger) で mprotect API を使用しようとしています。私が知っているすべての方法を試してみましたが、書き込み許可を追加しようとしているときに「許可が拒否されました」を意味する errno 13 で常に -1 が返されます。いくつかの実行可能コード。
同じコードが MacOS X 10.5 (ヒョウ) でも正確に機能します。
コードはかなり単純です
int ret = mprotect((void*)pFunc, 4096, PROT_WRITE | PROT_EXEC);
ここで、pFunc は、プロセスのアドレス空間にロードされた関数のアドレスです。PROT_WRITE アクセス権を追加する前に PROT_EXEC を削除しようとしましたが、うまくいきませんでした。また、pFuncをメモリページサイズに合わせてみましたが、運もありません..
これを機能させる方法はありますか?