web-dev-qa-db-ja.com

Android apkが再パッケージ化されていないことを確認しますか?

.apkが抽出、変更、再パック、再署名された場合にフラグを立てる私のAndroidアプリのセキュリティを改善しようとしています。問題に言及しているZdnetの記事 link1

懸念されるのは、アプリがハッカーの標的になっている場合、悪意のあるコードを追加して別のアプリストアにアップロードし、ユーザーをだましてダウンロードさせる可能性があることです。

だから私はapkまたは署名証明書のチェックサムを検証するためのコードを考えていますか?

アプリコードを再パックしてセキュリティコードを削除できることを感謝しますが、再パックの難易度が高くなり、別のアプリを試すのに十分かもしれません。

[更新] Google Playストアのライセンスモジュールが同様のものを提供していることは知っていますが、有料アプリやその他/非マーケットプレイス向けのものを探しています。

17
scottyab

最終的に Dexguard (Android用の有料難読化ツール)を使用しました。これは、apk検証を実行するモジュールを提供します。実装は簡単で、平均よりも優れた保護を提供します。

チェックを行うためのコードは次のとおりです。

dexguard.util.TamperDetection.checkApk(context)

主な問題は、apkのチェックサムをどこに保存して、交換できるかどうかを確認することです。 dexguardの方法は、ローカルでチェックすることですが、クラス/文字列の暗号化やAPIの非表示などの他の機能を使用すると、この呼び出しがわかりにくくなります。

3
scottyab

ここにあなたを助けることができる記事のいくつかがあります。

実行時にAPK署名を取得する
APK署名を自己チェックします。
APK署名の確認方法

1

Googleライセンスサービスを使用するPlayストアに接続して、ユーザーが数日ごとにアプリを購入したことを確認します。 (金額を設定できます)ProGuardも見てください。コードからすべてのクラス、メソッド、および変数名が削除されるため、逆コンパイルすると理解が非常に困難になります。

0
kagronick