Suche…


Überprüfen der App-Signatur - Manipulationserkennung

Diese Technik beschreibt, wie Sie sicherstellen können, dass Ihr .apk mit Ihrem Entwicklerzertifikat signiert wurde, und nutzt die Tatsache, dass das Zertifikat konsistent bleibt und nur Sie Zugriff darauf haben. Wir können diese Technik in 3 einfache Schritte aufteilen:

  • Finden Sie die Signatur Ihres Entwicklerzertifikats.
  • Betten Sie Ihre Signatur in eine String-Konstante in Ihre App ein.
  • Stellen Sie sicher, dass die Signatur zur Laufzeit unserer Embedded Developer-Signatur entspricht.

Hier ist das Code-Snippet:

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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow