3 votes

Comparaison des signatures des apks

Je dispose de deux fichiers .apk qui sont censés être des versions différentes de la même application. Quelle est la meilleure façon de vérifier s'ils ont tous les deux été signés avec la même clé ?

Je veux m'assurer qu'aucune erreur n'a été commise et que la nouvelle version sera traitée comme une mise à jour de la même application.

2 votes

La clé est seulement une partie de ce qui la considérerait comme une mise à jour. Vous pouvez utiliser la même clé pour signer plusieurs applications. L'autre partie importante pour assurer qu'une application est une mise à jour est que les packages aient le même nom de package.

0 votes

Oui. Je suis au courant de cela cependant autant que je sache je vais bien avec les noms de package. où dans l'apk le nom du package serait-il répertorié (juste pour que je puisse m'assurer?)

3 votes

Si vous ouvrez le fichier AndroidManifest.xml, vous pouvez trouver le nom du package même sans décompiler l'application. Il devrait être près du début du fichier entre certains symboles.

2voto

pr0nin Points 353

Pour mettre à jour un fichier APK, deux propriétés doivent correspondre :

  1. Le nom du package de l'application (peut être vu dans AndroidManifest.xml après l'avoir décompilé)
  2. La signature de l'application doit correspondre (le certificat de signature utilisé doit être le même).

La meilleure façon de vérifier la signature d'un fichier APK et de voir le certificat de signature utilisé et la clé publique utilisée est d'utiliser apksigner.jar pour le SDK Android (build-tools) :

L'exemple suivant vérifie deux versions de l'application E-Mail de Samsung en utilisant apksigner:

java -jar \apksigner.jar verify -verbose --print-certs "Samsung Email_v4.2.74.1_apkpure.com.apk"
java -jar \apksigner.jar verify -verbose --print-certs "Samsung Email_v4.1.43-5_apkpure.com.apk"

Chaque fois que vous obtenez une sortie comme celle-ci :

Vérifie
Vérifié en utilisant le schéma v1 (signature JAR) : false
Vérifié en utilisant le schéma v2 (Schéma de signature APK v2) : true
Nombre de signataires : 1
Certificat du signataire n°1 DN : EMAILADDRESS=android.os@samsung.com, CN=Samsung Cert, OU=DMC, O=Samsung Corporation, L=Suwon City, ST=South Korea, C=KR
Empreinte digest SHA-256 du certificat du signataire n°1 : 34df0e7a9f1cf1892e45c056b4973cd81ccf148a4050d11aea4ac5a65f900a42
Empreinte digest SHA-1 du certificat du signataire n°1 : 9ca5170f381919dfe0446fcdab18b19a143b3163
Empreinte digest MD5 du certificat du signataire n°1 : d087e72912fba064cafa78dc34aea839
Algorithme de clé du signataire n°1 : RSA
Taille de clé du signataire n°1 (bits) : 2048
Empreinte digest SHA-256 de la clé publique du signataire n°1 : 0470be656b9375d253fbb94c3a87dc7040e2f2760c19c4292eb62cc68e02de4a
Empreinte digest SHA-1 de la clé publique du signataire n°1 : df1e4fd4fc2ebfc187f79309dfc6a4c662bda4d0
Empreinte digest MD5 de la clé publique du signataire n°1 : 7c6371f33db3b4361504cb13beb6e818

Vous devez uniquement comparer l'empreinte sha256 du certificat et/ou de la clé publique. Si pour les deux APK elles sont identiques, vous pouvez être sûr qu'elles ont été publiées par la même personne ou entreprise (tant que le propriétaire de l'application n'a pas vendu l'application à quelqu'un d'autre ou que la clé privée n'a pas été volée).

1voto

Milner Points 533

Vous auriez besoin de vérifier deux choses :

  1. si les noms de packages sont identiques
    voir : Lire le nom du package d'un APK Android sur notre site partenaire. En bref : Exécutez aapt dump badging fichier.apk et surveillez package:. Si les noms de packages sont identiques, il s'agit probablement de la même application - mais il n'est toujours pas clair s'ils proviennent du même développeur et donc si le "nouveau" serait considéré comme une "mise à jour valide" - ou si la "vérification de la signature" échouerait dans ce processus.
  2. si les signatures correspondent
    Cela signifie qu'ils sont signés avec la même clé - ce qui devrait garantir qu'ils ont été (créés et signés) par le même développeur, qui aurait dû garder secrète sa clé de signature. Encore une fois, voir sur notre site partenaire : Comment afficher l'identité de la personne qui a signé l'APK sur un appareil Android ? // Obtenir les détails du certificat à partir d'un APK.

Notez que les tâches décrites nécessitent au moins une installation de base des outils de développement Android. aapt fait même partie d'une installation minimale de ADB - jarsigner et keytool nécessiteraient un package plus complet (mais si vous êtes sous Linux, openssl offre une approche différente - les détails peuvent être trouvés dans les publications liées de Stack Overflow).

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X