Androidアプリに.so
Cライブラリの形式でAndroidアプリに統合するための形式でアプリを提供します。
問題は、.so
ライブラリにエクスポートされた関数が2つしかないということです:encrypt
関数とdecrypt
関数。私が知っていることから、アプリだけでなく、[〜#〜] any [〜#〜]環境からこれらの2つのエクスポートされた関数を呼び出すことができます。
ここでの考え方は、暗号化/復号化メカニズムを保護することです。静的分析が不可能であると仮定します(ユーモアしてください:)):.so
ライブラリができることを確認する方法はあります[〜#〜] only [〜#〜] =アプリから実行しますか?
リバースエンジニアリングの脅威を無視する場合は(無視してはいけません)、SOの暗号化/復号化機能を非表示にして、信頼できる環境からのみ使用できるようにすることができます(JNI_OnLoad()
を参照)。例えば。ライブラリをロードするアプリケーションのパッケージ名を確認できます。しかし、まったく同じように、encrypt()とdecode()で同じチェックを実行できます。
別のトリックは、ライブラリの通常のパッケージ化プロセスを使用しないで、APKからアプリケーションからのみアクセスできる場所に手動でアンパックすることです。この保護は、ルート化されたデバイスでは役立ちません。