3

私はAndroidのメモリの特定の領域の保護を変更するためにmprotect()を使用しようとしています。ただし、何をしてもリージョンを書き込み可能にすることはできません(何をしても、PROT_READ | PROT_EXECのままになります。Androidのメモリ保護について理解していないことがあるかもしれません。実行可能ファイルに書き込む権利を常に拒否しますか?メモリ領域?もしそうなら、これを無効にするシステムオプションがありますか?

コードは次のようになります。

int sub() { return 0; }

void main()
{
    int pagesize = sysconf(_SC_PAGESIZE); /* 0x1000 */
    mprotect( (void *)((int)sub - ((int)sub % pagesize), pagesize, PROT_WRITE);
    *((unsigned char *)sub) = 0; /* fails here */
}

mmapを使用してmprotectsyscallを直接呼び出してみましたが、役に立ちませんでした。PROT_READ|PROT_WRITEも試しました。

私はiOSで同様のことをしましたが、これは絶対にうまく機能します...

4

0 に答える 0