MacOSX 10.4(tiger)でmprotect APIを使用しようとしていますが、可能な限りすべて試してみました。常に-1を返します。errno 13は "permission denied"実行可能なコードに書き込み権限を追加しようとしています。mprotect API on OS X Tiger
同じコードはMacOS X 10.5(ヒョウ)で動作します。 PFUNCは、プロセスのアドレス空間にロードされた任意の関数のアドレスです
コードが
int ret = mprotect((void*)pFunc, 4096, PROT_WRITE | PROT_EXEC);
非常に単純です。私はPROT_WRITEアクセス権を追加する前にPROT_EXECを削除しようとしましたが、運はありません。私はまた、pFuncをメモリページのサイズと合わせることを試みましたが、運も駄目ではありません。
どのようにすればよいでしょうか?
+1、私は同じ正確な問題を抱え、最終的には私のサポートリストからOSXを落としました。 –
問題を引き起こす完全なプログラムを表示します。 – stepancheg