1

私は自己変更コード ライブラリを作成しようとしています。

typedef int (*FUNC) (void);
int test();

JNIEXPORT int Java_com_example_untitled_MyActivity_decrypt( JNIEnv* env, jobject thiz)
{
    void *code = mmap(NULL, 4, PROT_WRITE | PROT_EXEC, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);

    if (code != MAP_FAILED) {
        memcpy(code, test, 4);

        return ( (FUNC)code)();
    }

    return 0;
}

int test()
{
    return 100;
}

助けてください... Androidでネイティブの自己変更コードを出発点として使用しましたが、「-marm」とサムビットを使用してコンパイルすることについて何か言いました...

私が抱えている問題は、クラッシュするだけです。cacheflush 関数を使用してみましたが、役に立たないようです。私は途方に暮れています。

4

1 に答える 1