私はサーバーベースのアプリケーションのバージョン無効化システムを実装しようとしています。apk署名に基づいて情報を取得する
サーバーに要請すると、クライアントはキーワードを追加し、そのパスワードがホワイトリストにない場合、サーバーはエラーで応答し、アプリケーションはマーケット更新があることを警告するメッセージを表示します(通常、そのバージョンがハッキングされているか、正当なバージョンで使用されていたが、クラックされたバージョンが同じコードを使用しているためブラックリストに登録されているため)。 パスワードを生成するために、コンパイルされたバージョンを識別する実行時に復元された鍵が必要です(apkが再コンパイルされても動作しません)。
最初はコードで取得したapkの署名このような:ハッカーは私のAPKの署名を取得することができますので、
public static int getSignature() {
try {
Signature sigs[] = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES).signatures;
return sigs[0].hashCode();
} catch (NameNotFoundException ignore) {
}
return 0;
}
しかし、あるはかなり愚かである(デバイスにインストールし、上記のコードでプログラムを実行している(my.apk.package名の代わりgetPackageNameを使用して())
次に、getSignature()メソッドを変更してthの代わりに偽のコードを返すe実際の署名。
私の質問は、情報(署名に依存しているか類似している)がありますが、値が変更され、そうでない可能性がある別の署名でコードが再コンパイルされた場合、これは、長い読み取りおよびいくつかの仕事かもしれ http://developer.android.com/guide/publishing/licensing.html
、ちょっと、それはです:簡単にアプリが有料のものである場合、あなたが見てしたいことがあり
おかげ