3 votos

Comparación de firmas de apks

Tengo dos archivos .apk que se supone que son versiones diferentes de la misma aplicación. Cuál es la mejor manera de comprobar si ambos fueron firmados con la misma clave?

Quiero asegurarme de que no se han cometido errores y de que la nueva versión se tratará como una actualización de la misma aplicación.

2 votos

La clave es sólo una parte de lo que la consideraría una actualización. Puede utilizar la misma clave para firmar varias aplicaciones. La otra parte importante para garantizar que una aplicación es una actualización es que los paquetes tengan el mismo nombre.

0 votos

Sí. Soy consciente de ello, sin embargo por lo que yo sé que estoy o.k. con los nombres de los paquetes. donde en el apk sería el nombre del paquete se enumeran (sólo para que yo pueda estar seguro ?)

3 votos

Si abre el AndroidManifest.xml puedes encontrar el nombre del paquete incluso sin descompilar la aplicación. Debe estar cerca del principio del archivo entre algunos símbolos.

2voto

pr0nin Puntos 353

Para actualizar un archivo APK deben coincidir dos propiedades:

  1. El nombre del paquete de la aplicación (puede verse en AndroidManifest.xml después de descompilarlo)
  2. La firma de la aplicación debe coincidir (el certificado de firma utilizado debe ser el mismo).

La mejor manera de verificar la firma de un archivo APK y ver el certificado de firma utilizado y la clave pública a utilizar apksigner.jar para el SDK de Android (build-tools):

El siguiente ejemplo verifica dos versiones de la aplicación de correo electrónico de Samsung utilizando 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"

Cada vez que se obtiene una salida como esta:

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

Sólo tiene que comparar el resumen sha256 del certificado y/o del clave pública . Si los dos APKs son iguales puedes estar seguro de que han sido lanzados por la misma persona o empresa (siempre y cuando el propietario de la aplicación no haya vendido la aplicación a otra persona o la clave privada haya sido robada).

1voto

Izzy Puntos 45544

Tendrías que comprobar dos cosas:

  1. si los nombres de los paquetes son idénticos
    ver: Leer el nombre del paquete de un APK de Android en nuestro sitio hermano. En pocas palabras: Corre aapt dump badging file.apk y cuidado con package: . Si los nombres de los paquetes son idénticos, debería ser la misma aplicación - pero aún no está claro si son del mismo dev y por lo tanto si la "nueva" sería considerada una "actualización válida" - o la "comprobación de la firma" fallaría en ese proceso.
  2. si las firmas coinciden
    Es decir, si están firmados con la misma clave, lo que debería garantizar que han sido (creados y firmados) por el mismo dev, que debería haber mantenido su clave de firma en secreto. Nuevamente, vea en nuestro sitio hermano: ¿Cómo ver la identidad de la persona que firmó el apk en el dispositivo Android? // Obtención de los datos del certificado desde un apk .

Tenga en cuenta que las tareas descritas necesitan al menos una instalación básica de las herramientas para desarrolladores de Android. aapt es incluso parte de un mínimo ADB instalación - jarsigner y keytool necesitaría un paquete más completo (aunque si estás en Linux, openssl ofrece un enfoque diferente - los detalles se pueden encontrar en las entradas enlazadas de Stack Overflow.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X