Ich habe zwei .apk-Dateien, die verschiedene Versionen derselben App sein sollen. Wie kann ich am besten überprüfen, ob beide mit demselben Schlüssel signiert wurden?
Ich möchte sicherstellen, dass keine Fehler gemacht wurden und die neuere Version als Update derselben App behandelt wird.
Zum Aktualisieren einer APK-Datei müssen zwei Eigenschaften übereinstimmen:
AndroidManifest.xml
nach dem Dekompilieren angezeigt werden)Der beste Weg, um eine Signatur einer APK-Datei zu überprüfen und das verwendete Signaturzertifikat und den öffentlichen Schlüssel anzuzeigen, die apksigner.jar
für das Android SDK (Build-Tools) verwendet werden sollen:
Das folgende Beispiel führt die Überprüfung von zwei Versionen der Samsung E-Mail-App mit aus apksigner
:
java -jar <path to apksigner>\apksigner.jar verify -verbose --print-certs "Samsung Email_v4.2.74.1_apkpure.com.apk"
java -jar <path to apksigner>\apksigner.jar verify -verbose --print-certs "Samsung Email_v4.1.43-5_apkpure.com.apk"
Jedes Mal erhalten Sie eine Ausgabe wie diese:
Verifies
Verified using v1 scheme (JAR signing): false
Verified using v2 scheme (APK Signature Scheme v2): true
Number of signers: 1
Signer #1 certificate DN: EMAILADDRESS=android.os@samsung.com, CN=Samsung Cert, OU=DMC, O=Samsung Corporation, L=Suwon City, ST=South Korea, C=KR
Signer #1 certificate SHA-256 digest: 34df0e7a9f1cf1892e45c056b4973cd81ccf148a4050d11aea4ac5a65f900a42
Signer #1 certificate SHA-1 digest: 9ca5170f381919dfe0446fcdab18b19a143b3163
Signer #1 certificate MD5 digest: d087e72912fba064cafa78dc34aea839
Signer #1 key algorithm: RSA
Signer #1 key size (bits): 2048
Signer #1 public key SHA-256 digest: 0470be656b9375d253fbb94c3a87dc7040e2f2760c19c4292eb62cc68e02de4a
Signer #1 public key SHA-1 digest: df1e4fd4fc2ebfc187f79309dfc6a4c662bda4d0
Signer #1 public key MD5 digest: 7c6371f33db3b4361504cb13beb6e818
Sie müssen nur den sha256-Digest des Zertifikats und/oder des öffentlichen Schlüssels vergleichen . Wenn sie für beide APKs gleich sind, können Sie sicher sein, dass sie von derselben Person oder Firma veröffentlicht wurden (solange der App-Eigentümer die App nicht an jemand anderen verkauft hat oder der private Schlüssel gestohlen wurde).
Sie müssten zwei Dinge überprüfen:
aapt dump badging file.apk
und aufpassen package:
. Wenn die Paketnamen identisch sind, müsste es sich um dieselbe App handeln – allerdings ist noch unklar, ob sie vom selben Entwickler stammen und damit ob das „Neue“ als „gültiges Update“ gelten würde – oder die „Signaturprüfung“ fehlschlagen würde in diesem Prozess.Beachten Sie, dass für die beschriebenen Aufgaben mindestens eine Basisinstallation der Android-Entwicklertools erforderlich ist. aapt
ist sogar Teil einer minimalen ADB- Installation – jarsigner
und keytool
würde ein vollständigeres Paket benötigen (wenn Sie unter Linux arbeiten, openssl
bietet es jedoch einen anderen Ansatz – Details finden Sie in den verlinkten Beiträgen von Stack Overflow.
Ryan Konrad
epeleg
GiantTree
AndroidManifest.xml
Datei öffnen, finden Sie den Paketnamen auch ohne die App zu dekompilieren. Es sollte am Anfang der Datei zwischen einigen Symbolen stehen.