webdevqa.jp.net

著作権侵害からアプリを保護する方法

Androidアプリを開発しており、それを公開する予定です(有料アプリ)。非常に簡単に海賊版になると聞きましたAndroidアプリ(あなたの経験やあなたの知っていること、私のアプリのセキュリティをどのように高めることができるのか疑問に思っていましたか?違法に共有できるアイデア、経験、コメントはありますか?

36
Snake

Android用の無料のマルウェア対策アプリをリリースしました。ハッキングされたユーザーがいないことを確認して、その成功に不可欠でした。 Androidマーケットのアプリに対する最大の脅威は、ソースコードの漏洩、有料アプリのコピー/配布、キーの再生成などです。それぞれを説明し、それらを解決する方法を説明します。

まず、 このペーパー は、コンパイルされたコードを解凍してソースコードを表示することにより、Androidアプリケーションをリバースエンジニアリングする方法を説明しています。これを防ぐことはできません。期間:意志を持った人は、apkのコピーを入手した場合、いつでもソースコードを見ることができます(ルート化された携帯電話で簡単に入手できます)良いニュースは、コードの重要な部分を難読化して、 Proguard は、Androidによって提供されるツールで、パッケージ化中にコードを難読化(読みにくくする)できます。重要なコードがただし、すべての脆弱なメソッドまたは変数を、ActivityService、またはBroadcastReceiver以外のファイルに移動する必要があります。詳細については、ドキュメントを参照してください。 。

アプリケーションの不正コピーと配布を防ぐために、Google Playではいくつかの ライセンスオプション を提供しています。残念ながら、LVLは完全に安全でもありません。それをクラックする方法(Google Playより前)の詳細なHOW-TOが利用可能です here

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

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

67
Phil

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

改ざんチェック

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

update:この質問に答えて以来、改ざん検出に関するより多くの 詳細な記事 を書きました。

8
scottyab

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

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

これが最良の選択です。

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

6