サーチ…


アプリケーションの署名を確認する - 改ざん検出

このテクニックでは、.apkが開発者証明書で署名されていることを確認する方法を詳しく説明し、証明書が一貫性を保ち、ユーザーだけがアクセスできることを利用しています。この手法を3つの簡単なステップに分けることができます。

  • 開発者証明書の署名を探します。
  • あなたのアプリケーションの文字列定数にあなたの署名を埋め込みます。
  • 実行時に署名が埋め込まれた開発者の署名と一致することを確認します。

コードスニペットは次のとおりです。

private static final int VALID = 0;
private static final int INVALID = 1;

public static int checkAppSignature(Context context) {

try {
      PackageInfo packageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);

      for (Signature signature : packageInfo.signatures) {

        byte[] signatureBytes = signature.toByteArray();

        MessageDigest md = MessageDigest.getInstance("SHA");

        md.update(signature.toByteArray());

        final String currentSignature = Base64.encodeToString(md.digest(), Base64.DEFAULT);

        Log.d("REMOVE_ME", "Include this string as a value for SIGNATURE:" + currentSignature);

        //compare signatures
        if (SIGNATURE.equals(currentSignature)){
          return VALID;
        };
      }
    } catch (Exception e) {
        //assumes an issue in checking signature., but we let the caller decide on what to do.
    }

    return INVALID;

}


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow