2012-03-26 18 views
35

私はアンドロイドアプリを開発中で、有料アプリを公開する予定です。私はAndroidアプリを海賊版するのは非常に簡単だと聞いています(iPhoneよりずっと簡単です)。私はあなたの経験や知っていることから、私のアプリのセキュリティをどのように高めることができますか?私はそれが100%保証されることは決してないことを知っていますが、違法にそれを海賊版したり配布したりするのが難しくなりたいです あなたが共有できるアイデア、経験、コメントはありますか?著作権侵害から私のアプリを保護する方法

+0

あなたは技術の束と一緒に行かなければならず、それでもそれを完全に防ぐことはできません。最初は 'google play licensing'と' code obfuscation'を使います。私は有名な著作権侵害のWebサイトをチェックして、ワンクリックのホスティング業者にファイルをダウンロードさせてもらうことを提案しますが、どうやってこれを処理するのか分かりません。そして、すぐにどこに戻ってきても、それはかなり無駄です。 – stefan

+0

C++を使用してアプリケーションのコア部分を構築し、android NDKを使用すると、ネットワークを使用して有効なバイヤーを認証するアドバイスがあります。 –

答えて

64

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

まず、this paperは、コンパイルされたコードを解凍してソースコードを表示することによって、Androidアプリケーションをリバースエンジニアリングする方法を説明します。あなたはこれがあなたのアプリに起こるのをブロックすることはできません。期間。誰かがあなたのソースコードを見ることができるのはあなたのapkのコピーを入手した場合です(根っからの電話で簡単に入手できます)。良いニュースは、コードの重要な部分を難読化して、リバースエンジニアリングを難しくすることができるということです。 Proguardは、Androidで提供されるツールで、パッケージ化中にコードを難読化(難読化)できるようにします。しかし、重要なコードが読み取られないようにするには、脆弱なメソッドや変数をActivityService、またはBroadcastReceiver以外のファイルに移動する必要があります。完全な事実については、ドキュメントを読んでください。

あなたのアプリケーションの違法コピーと配信を保護するために、Google Playはlicensing optionsを提供しています。残念なことに、LVLも完全に安全ではありません。クラックの仕方(Google Play以前)の詳細はhereです。

最後に、ソースコード(または難読化されたソースコード)が流出した後、自分の悪意のあるコードをいくつか追加するだけで、辞退することができるように、多数の学術論文やオンラインブログアプリをAndroidマーケットに公開することができます。ここで良いニュースは、あなたのアンドロイドライセンスキーのパスワードが容易に推測できない限り、または他の人にそれを渡すと、攻撃者は同じライセンスキーでアプリケーションを公開できなくなります。これはあなたを非難から守るだけでなく、悪意のあるアプリケーションが元のアプリケーション(例えばSharedPreferences)を通じて利用可能なデータにアクセスできないようにします。すべてのすべてで

、本当に海賊行為からあなたのアプリケーションを保護するための最良の方法は、正しく設定してProGuardのGoogleは免許再生、および非常に安全なライセンスキーを使用して、あなたに最後のAPKに署名することを使用することです。

+4

うわー..素晴らしい情報と非常に詳細な答え。私はそれが紙で証明されていることが好きです。あなたの提案に従います。私はまだ彼らの経験を共有するために人々を励ます。 – Snake

+6

APKのコピーを入手するために根ざしたデバイスは必要ないと指摘したい。 'ADB pull com.example.coolappdude'。さらに、ProguardはJavaバイトコードの難読化ツールです。メーカーのProGuardにはDalvikバイトコードの難読化ツールであるDexGuardというフリーではないプログラムがあります。あなたのパラノイアのレベルに応じて、どちらか一方を検討するかもしれません。 – CatShoes

+0

Dan Galpinは、I/O 2011でLVLをより安全にする方法について話しました。http://www.youtube.com/watch?v=TnSNCXR9fbY – keyboardr

6

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

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

これはあなたの最良の選択です。

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

+0

Googleのライセンス(アプリの署名を通じて)は本当に役に立たないと聞きました。アプリケーションをダウンロードし、ライセンスを削除し、ワンクリックで新しいユーザーと署名する自動ツールがあります(私はフォーラムの1つでそれを読んでいます)。私は間違いなくライセンスを使用しますが、私は別の防衛層が必要です.. – Snake

+1

アプリ署名メカニズムは推奨されていません。新しいライセンスシステムはネットワークベースであり、非常に安定しています。 –

8

難読化と併せて改ざんチェックを追加して、ユーザーがアプリケーションを無効にしている場合に、機能/ユーザーに通知することができます。私は硬い難読化のためにDexGuardを使用します。

タンパーが

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

更新:この質問に答えるので、私は改ざん検出のdetailed article以上を書きました。

+0

ありがとう、コード例がありますか?私は難読化のためにプロガードを使用しています – Snake

+0

この本にはいくつかの例がありますhttp://www.packtpub.com/android-security-cookbook/book *免責事項私は固めの章を書きました*コードサンプルは本書のサポートセクションに無料でダウンロードできますウェブサイト – scottyab

+0

@scottyab正当なユーザーが支払った後にソフトウェアを使用できなくなる可能性が非常に高くなりますか? –

関連する問題