37

私はAndroidアプリを開発しており、それを公開する予定です(有料アプリ)。Androidアプリの海賊版は非常に簡単だと聞いています(iPhoneよりもはるかに簡単です)。私はあなたの経験やあなたが知っていることから、どうすれば私のアプリのセキュリティを高めることができるのだろうかと思っていました。100%セキュリティで保護することはできないことは承知していますが、海賊版や違法な配布を困難にしたいと考えています。共有できるアイデア、経験、コメントはありますか?

4

3 に答える 3

70

私は Android 用の無料のマルウェア対策アプリをリリースしましたが、その成功には誰もハッキングされないようにすることが不可欠でした。Android マーケットのアプリに対する最大の脅威には、ソース コードの漏洩、有料アプリのコピー/配布、およびキーの再入力が含まれます。以下にそれぞれを説明し、それらを解決する方法を説明します。

最初に、このホワイト ペーパーでは、コンパイルされたコードをアンパックしてソース コードを表示することにより、Android アプリケーションをリバース エンジニアリングする方法について説明します。アプリでこれが発生するのをブロックすることはできません。限目。意志のある人は、あなたの apk のコピーを入手すれば、いつでもあなたのソースコードを見ることができます (ルート化された電話で簡単に利用できます)。幸いなことに、コードの重要な部分を難読化して、リバース エンジニアリングを困難にすることができます。Proguardは Android が提供するツールで、パッケージ化中にコードを難読化 (読みにくくする) できます。ただし、重要なコードが読み取られないようにするには、脆弱なメソッドまたは変数をすべてActivity、、、ServiceまたはBroadcastReceiver. 完全な事実については、ドキュメントをお読みください。

アプリケーションの違法なコピーや配布を防ぐために、Google Play ではいくつかのライセンス オプションを提供しています。残念ながら、LVL も完全に安全というわけではありません。クラック方法の詳細な HOW-TO (Google Play 以前) は、こちらから入手できます。

最後に、上記のリンク先の論文、および多数の学術記事やオンライン ブログで、ソース コード (または難読化されたソース コードでさえも) が漏洩すると、独自の悪意のあるコードを追加するだけで、アプリを辞任する方法が説明されています。 Android マーケットに公開します。ここで朗報なのは、Android ライセンス キーのパスワードが簡単に推測できるものでない限り、または他人に渡した場合を除き、攻撃者は同じライセンス キーを使用してアプリケーションを公開することはできないということです。これにより、非難から保護されるだけでなく、悪意のあるアプリケーションが元のアプリケーション ( SharedPreferences.

全体として、アプリケーションを著作権侵害から本当に保護する最善の方法は、ProguardGoogle Play Licensure を正しく構成して使用し、非常に安全なライセンス キーで最終的な apk に署名することです。

于 2012-03-26T01:49:56.850 に答える
9

難読化と組み合わせた改ざんチェックを追加して、アプリが海賊版である場合にユーザーに警告する/機能を無効にする/サーバーに報告することができます。難読化を強化するためにDexGuardを使用しています。

改ざんチェック

  • インストーラー アプリ - パッケージ マネージャーを使用して、インストールするアプリが play/amazon アプリ ストアであることを確認します。
  • エミュレーター チェック - システム プロパティをチェックして、アプリがエミュレーター上で実行されていることを示す兆候がないかどうかを確認します。
  • デバッグ可能チェック - パッケージ マネージャーを使用してデバッグ可能フラグをチェックします。これは製品ではオフにする必要があるため、攻撃/改ざんを示している可能性があります。
  • 署名証明書チェック - パッケージ マネージャーを使用して、アプリが開発者証明書で署名されていることを確認します (これは、誰かがアプリをアンパックして再パック/再署名した場合に壊れます)

更新:この質問に答えてから、改ざん検出に関するより詳細な記事を書きました。

于 2014-03-19T08:28:09.647 に答える
7

GooglePlayのライセンスフレームワークをご覧ください。

http://developer.android.com/guide/market/licensing/index.html

これが最良の選択です。

Google Playライセンスは、アプリケーションが信頼できるGoogle Playライセンスサーバーにクエリを実行して、アプリケーションが現在のデバイスユーザーにライセンスされているかどうかを判断できるネットワークベースのサービスです。ライセンスサービスは、特定のユーザーが特定のアプリケーションを使用するためのライセンスを取得しているかどうかを判断するGooglePlayライセンスサーバーの機能に基づいています。ユーザーがアプリケーションの記録された購入者である場合、GooglePlayはユーザーがライセンスされていると見なします。

于 2012-03-26T00:06:31.193 に答える