私はアンドロイドアプリを開発中で、有料アプリを公開する予定です。私はAndroidアプリを海賊版するのは非常に簡単だと聞いています(iPhoneよりずっと簡単です)。私はあなたの経験や知っていることから、私のアプリのセキュリティをどのように高めることができますか?私はそれが100%保証されることは決してないことを知っていますが、違法にそれを海賊版したり配布したりするのが難しくなりたいです あなたが共有できるアイデア、経験、コメントはありますか?著作権侵害から私のアプリを保護する方法
答えて
私はAndroid用の無料のマルウェア対策アプリをリリースしました。誰もそれをハックしていないことを確認することで、その成功に不可欠でした。 Androidマーケットの最大の脅威は、流出したソースコード、コピー/配布された有料アプリ、再キーイングなどです。私はそれらを解決するためにそれぞれ以下とその方法を説明します。
まず、this paperは、コンパイルされたコードを解凍してソースコードを表示することによって、Androidアプリケーションをリバースエンジニアリングする方法を説明します。あなたはこれがあなたのアプリに起こるのをブロックすることはできません。期間。誰かがあなたのソースコードを見ることができるのはあなたのapkのコピーを入手した場合です(根っからの電話で簡単に入手できます)。良いニュースは、コードの重要な部分を難読化して、リバースエンジニアリングを難しくすることができるということです。 Proguardは、Androidで提供されるツールで、パッケージ化中にコードを難読化(難読化)できるようにします。しかし、重要なコードが読み取られないようにするには、脆弱なメソッドや変数をActivity
、Service
、またはBroadcastReceiver
以外のファイルに移動する必要があります。完全な事実については、ドキュメントを読んでください。
あなたのアプリケーションの違法コピーと配信を保護するために、Google Playはlicensing optionsを提供しています。残念なことに、LVLも完全に安全ではありません。クラックの仕方(Google Play以前)の詳細はhereです。
最後に、ソースコード(または難読化されたソースコード)が流出した後、自分の悪意のあるコードをいくつか追加するだけで、辞退することができるように、多数の学術論文やオンラインブログアプリをAndroidマーケットに公開することができます。ここで良いニュースは、あなたのアンドロイドライセンスキーのパスワードが容易に推測できない限り、または他の人にそれを渡すと、攻撃者は同じライセンスキーでアプリケーションを公開できなくなります。これはあなたを非難から守るだけでなく、悪意のあるアプリケーションが元のアプリケーション(例えばSharedPreferences
)を通じて利用可能なデータにアクセスできないようにします。すべてのすべてで
、本当に海賊行為からあなたのアプリケーションを保護するための最良の方法は、正しく設定してProGuardの、Googleは免許再生、および非常に安全なライセンスキーを使用して、あなたに最後のAPKに署名することを使用することです。
うわー..素晴らしい情報と非常に詳細な答え。私はそれが紙で証明されていることが好きです。あなたの提案に従います。私はまだ彼らの経験を共有するために人々を励ます。 – Snake
APKのコピーを入手するために根ざしたデバイスは必要ないと指摘したい。 'ADB pull com.example.coolappdude'。さらに、ProguardはJavaバイトコードの難読化ツールです。メーカーのProGuardにはDalvikバイトコードの難読化ツールであるDexGuardというフリーではないプログラムがあります。あなたのパラノイアのレベルに応じて、どちらか一方を検討するかもしれません。 – CatShoes
Dan Galpinは、I/O 2011でLVLをより安全にする方法について話しました。http://www.youtube.com/watch?v=TnSNCXR9fbY – keyboardr
Google Playライセンスのフレームワークをご覧ください。
http://developer.android.com/guide/market/licensing/index.html
これはあなたの最良の選択です。
Googleがライセンスを再生するには、 アプリケーションのクエリ、信頼できるGoogleは、アプリケーションが現在のデバイスのユーザーにライセンスされているかどうか を決定するためにライセンスサーバーを再生することができますネットワークベースのサービスです。 ライセンスサービスは、Google Playの ライセンスサーバーが特定のアプリケーションに を使用するライセンスを付与されているかどうかを判断する機能に基づいています。 ユーザーがアプリケーションの記録済み購入者である場合、Google Playはユーザーのライセンスを取得するとみなします。
Googleのライセンス(アプリの署名を通じて)は本当に役に立たないと聞きました。アプリケーションをダウンロードし、ライセンスを削除し、ワンクリックで新しいユーザーと署名する自動ツールがあります(私はフォーラムの1つでそれを読んでいます)。私は間違いなくライセンスを使用しますが、私は別の防衛層が必要です.. – Snake
アプリ署名メカニズムは推奨されていません。新しいライセンスシステムはネットワークベースであり、非常に安定しています。 –
難読化と併せて改ざんチェックを追加して、ユーザーがアプリケーションを無効にしている場合に、機能/ユーザーに通知することができます。私は硬い難読化のためにDexGuardを使用します。
タンパーが
- インストーラのアプリをチェック - 利用パッケージマネージャインストール済アプリを確保するためには、再生/アマゾンアプリストアである
- エミュレータチェックを - アプリがエミュレータ上で実行されている証拠となる兆候がシステムプロパティをチェックdevの外部攻撃/
- デバッグ可能チェック改ざんを示すことができる - デバッグフラグをチェックするために使用するパッケージマネージャを、本製品でオフにする必要がありますので、
- 署名証明書のチェック改ざん/攻撃を示す可能性 - に使用パッケージマネージャをアプリは、あなたの開発者の証明書で署名されて確認します(これは解凍され、再包装、誰かが/アプリを辞任した場合に壊れてしまう)
更新:この質問に答えるので、私は改ざん検出のdetailed article以上を書きました。
- 1. 著作権侵害からAndroid(Intel XDK)アプリを保護する
- 2. 著作権侵害からアンドロイドアプリケーションを保護する
- 3. 著作権侵害に対してウェブサイトを保護する
- 4. HTML5オーディオ要素の著作権侵害?
- 5. 著作権侵害の回避
- 6. アンドロイドアプリ著作権侵害防止
- 7. iPhoneアプリケーションの著作権侵害を減らす
- 8. イメージの著作権侵害を止めるには?
- 9. サーバーのリクエストによるAndroidの著作権侵害防止
- 10. 著作権侵害の防止とAppleへのAppの提出
- 11. アプリ内にリンクに接続するボタンがあれば、それは著作権侵害ですか?
- 12. ライセンスごとに販売されているWebアプリケーションを著作権侵害から保護するにはどうすればよいですか?
- 13. RAPIDSHARE著作権侵害ファイルの自動削除プロセスを自動化
- 14. 実行可能な暗号化のチェック反著作権侵害対策
- 15. Windows Phone 7アプリケーションの著作権侵害をどのように止めますか?
- 16. は、私がこのウィキから次の反海賊行為のコードを実装するtryignてきたPT_DENY_ATTACH著作権侵害防止コード
- 17. ビデオが著作権で保護されているかどうかを調べる方法は? Youtube API v3
- 18. YouTubeの著作権で保護されたビデオを取得する
- 19. デフォルトのプログラムアイコンは著作権で保護されていますか?
- 20. セキュリティサンドボックス侵害
- 21. OAuth 2.0は、侵害されたアカウントからどのように保護されますか?
- 22. アプリを保護する方法
- 23. Avadaテーマの著作権テキストを変更する方法
- 24. ライブストリーミングの著作権状況を確認する方法
- 25. 著作権コンテンツAPI
- 26. XAML著作権ヘッダー
- 27. 私のファイルを保護する方法
- 28. 著作権の文字をテキストから削除するJavaScript
- 29. ページの下に著作権表示を貼る方法
- 30. メトロUIは著作権で保護されていますか、それとも実装できますか?
あなたは技術の束と一緒に行かなければならず、それでもそれを完全に防ぐことはできません。最初は 'google play licensing'と' code obfuscation'を使います。私は有名な著作権侵害のWebサイトをチェックして、ワンクリックのホスティング業者にファイルをダウンロードさせてもらうことを提案しますが、どうやってこれを処理するのか分かりません。そして、すぐにどこに戻ってきても、それはかなり無駄です。 – stefan
C++を使用してアプリケーションのコア部分を構築し、android NDKを使用すると、ネットワークを使用して有効なバイヤーを認証するアドバイスがあります。 –