Android
Sicurezza
Ricerca…
Verifica firma app - Rilevazione manomissione
Questa tecnica spiega come assicurarsi che il tuo .apk sia stato firmato con il certificato del tuo sviluppatore e sfrutta il fatto che il certificato rimane coerente e che solo tu hai accesso ad esso. Possiamo rompere questa tecnica in 3 semplici passaggi:
- Trova la firma del certificato dello sviluppatore.
- Incorpora la tua firma in una costante String nella tua app.
- Verifica che la firma in fase di runtime corrisponda alla firma dello sviluppatore incorporato.
Ecco lo snippet di codice:
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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow