関数呼び出しのアドレスをプログラムで取得する方法を探しています: public abstract void onKey (int primaryCode, int[] keyCodes) from KeyboardView.OnKeyboardActionListener インターフェイス。
これらの関数のアドレスは静的ですか? つまり、常に同じメモリにロードされます。
キーロガーからの改ざん防止を実現しようとしています。
実際、Javaには関数ポインターに相当するものがない場合に関数ポインターを取得する方法を尋ねているため、質問は基本的に意味がありません(オブジェクトを介した動的ディスパッチで関数への参照のみが表示されます)。
関数のアドレスは静的であるか、まったく存在しない場合がありますが、コードは仮想マシンで実行されるため、これはすべて透過的です。代わりに NDK レベルで質問している場合は、単純な&
C を使用して関数のアドレスを確実に取得できます。ただし、Java レベルではこれは不可能です。
ただし、これがキーロガーの防止に役立つ理由は明確ではありません。