私はAndroid向けの決済処理アプリを開発しており、ハッカーがアプリのリソース、資産、ソースコードにアクセスできないようにしたいと考えています。ダウンロードファイル。
誰かが.apk拡張子を.zipに変更すると、それを解凍してアプリのすべてのリソースとアセットに簡単にアクセスできるようになります。デックス2ジャーJavaデコンパイラーがあれば、ソースコードにもアクセスできます。Android APKファイルのリバースエンジニアリングは非常に簡単です。詳細については、Stack Overflowの質問を参照してください。APKファイルからプロジェクトへのリバースエンジニアリング。
Android SDK に付属の Proguard ツールを使用しました。署名されたキーストアと Proguard を使用して生成された APK ファイルをリバース エンジニアリングすると、難読化されたコードが生成されます。
ただし、Android コンポーネントの名前は変更されず、アプリで使用されるキー値などの一部のコードも変更されません。Proguard のドキュメントによると、このツールはマニフェスト ファイルに記載されているコンポーネントを難読化することはできません。
私の質問は次のとおりです。
- Android APK のリバースエンジニアリングを完全に防止するにはどうすればよいですか? これは可能ですか?
- ハッカーが APK ファイルをハッキングできないように、アプリのすべてのリソース、アセット、ソース コードを保護するにはどうすればよいでしょうか?
- ハッキングをさらに困難にしたり、不可能にしたりする方法はありますか? APK ファイルのソース コードを保護するために他に何ができるでしょうか?
ベストアンサー1
1. Android APK のリバース エンジニアリングを完全に回避するにはどうすればよいですか? これは可能ですか?
私の知る限り、リバースエンジニアリングを完全に回避する方法はありません。
また、@inazaruk の次の言葉も非常によくできています。コードに何をしても、潜在的な攻撃者は、可能だと判断したあらゆる方法でコードを変更することができます。基本的に、アプリケーションを変更から保護することはできません。また、そこに設定した保護は、無効化/削除される可能性があります。
2. ハッカーが APK ファイルをハッキングできないように、アプリのすべてのリソース、アセット、ソースコードを保護するにはどうすればよいでしょうか?
ただし、ハッキングを困難にするためにさまざまなトリックを使用できます。たとえば、難読化を使用します (Java コードの場合)。これにより、リバース エンジニアリングの速度が大幅に低下します。
3. ハッキングをさらに困難にしたり、不可能にしたりする方法はありますか? APK ファイルのソース コードを保護するために他に何ができるでしょうか?
誰もが言うように、そしておそらくあなたもご存知のとおり、100% のセキュリティは存在しません。しかし、Android で最初に取り組むべきことは、Google が組み込んだ ProGuard です。共有ライブラリを含めるオプションがある場合は、ファイル サイズや統合などを検証するために必要なコードを C++ で含めることができます。ビルドごとに APK のライブラリ フォルダーに外部ネイティブ ライブラリを追加する必要がある場合は、以下の提案に従って使用できます。
ライブラリを、プロジェクト フォルダー内のデフォルトで "libs" に設定されているネイティブ ライブラリ パスに配置します。'armeabi 'ターゲットのネイティブ コードをビルドした場合は、 libs/armeabiの下に配置します。armeabi -v7aを使用してビルドした場合は、 libs/armeabi-v7aの下に配置します。
<project>/libs/armeabi/libstuff.so