Sök…


Verifiera appsignatur - Detektering av tömmer

Den här tekniken beskriver hur du säkerställer att din .apk har signerats med ditt utvecklarcertifikat och utnyttjar det faktum att certifikatet förblir konsekvent och att bara du har tillgång till det. Vi kan dela upp denna teknik i tre enkla steg:

  • Hitta din utvecklare certifikat signatur.
  • Bädda in din signatur i en strängkonstant i din app.
  • Kontrollera att signaturen vid körning matchar vår inbäddade utvecklarsignatur.

Här är kodavsnittet:

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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow