私はこれについて考えていましたが、本当にアプリケーションをハッカーから保護したいのであれば、それを行う方法は 1 つしかないようです。Google の記事で説明されているように、アプリケーションのライセンスと支払いを保証するあらゆる種類の凝った方法を実装できますが、アプリケーションを逆コンパイルしてコードの場所を見つけ、それをコメントアウトするか関数を変更するのに必要なのは、優れたハッカーだけです。常に true を返すようにします。
代わりに、jni/ndk で使用するために必要なアプリケーションの一部を実装し、そのコードで検証を確認してください。非常に複雑なコードである必要はありませんが、ユーザーが ndk を呼び出す Java 呼び出しに簡単にコメントできるため、関数のようなもの (checkValidity など) を配置することはできません。代わりに、ndk を呼び出して、アプリケーションを実行するのに重要な何かを実際に実行する必要があります。これは、ユーザーがコメントアウトしたり、同じことを行う定義済み関数で切り替えたりすることはできません。ndk コード内から、アプリケーションの整合性/ライセンスの検証を行い、失敗した場合はアプリケーションを強制終了するか、必要なことをすべて実行します。
これを回避するには、ハッカーは ndk コードを再実装するか、リバース エンジニアリングを行う必要があります。
これは明らかに単純な解決策ではなく、アプリケーションがハッキングされないことを保証するものではありませんが、他の方法よりも破るのがはるかに難しいはずです..