Pour mettre à jour un fichier APK, deux propriétés doivent correspondre :
- Le nom du package de l'application (peut être vu dans
AndroidManifest.xml
après l'avoir décompilé)
- 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).
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.