2 votos

¿Tres tamaños de archivo APK diferentes para la misma versión/construcción de la aplicación?

Estoy obteniendo tres tamaños de archivo APK diferentes para supuestamente la misma versión/aplicación:

¿Por qué?

¿Cuál archivo es el original y cuáles son falsos? ¿Podría confirmar si el descargador de Evozi está intentando "colarle" una versión de APK (aquí: 2.7.2) diferente al enlace de la tienda Google Play que proporcionó (aquí: 2.7.3) o si tanto Apkpure como Aptoide están afirmando publicar fechas de publicación más recientes (aquí: 08-09-2021 y 14-09-2021) que el original (06-09-2021)? ¿Por qué está ocurriendo esto?

ACTUALIZACIÓN 1: Como se solicita, he extraído todas las APK. Los resultados son aún más preocupantes:

  • Versión 1 de Evozi: 957 Archivos, 51 Carpetas, 24.757.075 bytes

  • Versión 2 de Apkpure: 819 Archivos, 21 Carpetas, 25.118.159 bytes

  • Versión 3 de Aptoide: 4319 Archivos, 101 Carpetas, 31.704.315 bytes

...¿4319 archivos?!

ACTUALIZACIÓN 2: Como se sugiere, usé apksigner para revisar los certificados dentro de las APK:

Versión 1 de Evozi: 957 Archivos, 51 Carpetas, 24.757.075 bytes

C:\Users\...\Desktop>java -jar apksigner.jar verify --verbose --print-certs com.starfinanz.mobile.android.dkbpushtan_30044_apps.evozi.com.apk
Verifica
Verificado utilizando esquema v1 (firmado JAR): true
Verificado utilizando esquema v2 (Esquema de firma APK v2): true
Verificado utilizando esquema v3 (Esquema de firma APK v3): false
Verificado utilizando esquema v4 (Esquema de firma APK v4): false
Verificado para SourceStamp: false
Número de firmantes: 1
Firmante #1 DN del certificado: CN=Niels Mathea, OU=IT Betrieb Bank, O=DKB Service GmbH, L=Potsdam, ST=Brandeburgo, C=DE
Digerido SHA-256 del certificado #1: e5067dca4553173a1dd76352a8287b293960119689244ac58d0552703efe4268
Digerido SHA-1 del certificado #1: b4199718eaa0e676755af77419fb59abf7fece00
Digerido MD5 del certificado #1: 0a566744818c6fb89f4c900a1502cf1c
Algoritmo de clave del firmante #1: RSA
Tamaño de la clave del firmante #1 (bits): 2048
Digerido SHA-256 de la clave pública del firmante #1: d878ba65ddcd7bbd0d9fd284f0bc61762c7ecb83ecb6c58c8c138939fb661f7f
Digerido SHA-1 de la clave pública del firmante #1: dbf739ed124f07181b3cdd1867bdd0eb63da3d71
Digerido MD5 de la clave pública del firmante #1: 94fcb9a87a8ec48eed706456a93ab0cd
ADVERTENCIA: META-INF/androidx.customview_customview.version no está protegido por firma. Las modificaciones no autorizadas en esta entrada JAR no serán detectadas. Elimine o mueva la entrada fuera de META-INF/.
[...]

Versión 2 de Apkpure: 819 Archivos, 21 Carpetas, 25.118.159 bytes

C:\Users\...\Desktop>java -jar apksigner.jar verify --verbose --print-certs "DKB TAN2go_v2.7.3_apkpure.com.apk"
Verifica
Verificado utilizando esquema v1 (firmado JAR): true
Verificado utilizando esquema v2 (Esquema de firma APK v2): true
Verificado utilizando esquema v3 (Esquema de firma APK v3): false
Verificado utilizando esquema v4 (Esquema de firma APK v4): false
Verificado para SourceStamp: false
Número de firmantes: 1
Firmante #1 DN del certificado: CN=Niels Mathea, OU=IT Betrieb Bank, O=DKB Service GmbH, L=Potsdam, ST=Brandeburgo, C=DE
Digerido SHA-256 del certificado #1: e5067dca4553173a1dd76352a8287b293960119689244ac58d0552703efe4268
Digerido SHA-1 del certificado #1: b4199718eaa0e676755af77419fb59abf7fece00
Digerido MD5 del certificado #1: 0a566744818c6fb89f4c900a1502cf1c
Algoritmo de clave del firmante #1: RSA
Tamaño de la clave del firmante #1 (bits): 2048
Digerido SHA-256 de la clave pública del firmante #1: d878ba65ddcd7bbd0d9fd284f0bc61762c7ecb83ecb6c58c8c138939fb661f7f
Digerido SHA-1 de la clave pública del firmante #1: dbf739ed124f07181b3cdd1867bdd0eb63da3d71
Digerido MD5 de la clave pública del firmante #1: 94fcb9a87a8ec48eed706456a93ab0cd
ADVERTENCIA: META-INF/androidx.customview_customview.version no está protegido por firma. Las modificaciones no autorizadas en esta entrada JAR no serán detectadas. Elimine o mueva la entrada fuera de META-INF/.
[...]

Versión 3 de Aptoide: 777 Archivos, 21 Carpetas, 25.059.540 bytes

C:\Users\EPI-SMLM\Desktop>java -jar apksigner.jar verify --verbose --print-certs  com-starfinanz-mobile-android-dkbpushtan-30049-59302957-c297d2d2df90587173f6f8b78fce939d.apk
Verifica
Verificado utilizando esquema v1 (firmado JAR): true
Verificado utilizando esquema v2 (Esquema de firma APK v2): true
Verificado utilizando esquema v3 (Esquema de firma APK v3): false
Verificado utilizando esquema v4 (Esquema de firma APK v4): false
Verificado para SourceStamp: false
Número de firmantes: 1
Firmante #1 DN del certificado: CN=Niels Mathea, OU=IT Betrieb Bank, O=DKB Service GmbH, L=Potsdam, ST=Brandeburgo, C=DE
Digerido SHA-256 del certificado #1: e5067dca4553173a1dd76352a8287b293960119689244ac58d0552703efe4268
Digerido SHA-1 del certificado #1: b4199718eaa0e676755af77419fb59abf7fece00
Digerido MD5 del certificado #1: 0a566744818c6fb89f4c900a1502cf1c
Algoritmo de clave del firmante #1: RSA
Tamaño de la clave del firmante #1 (bits): 2048
Digerido SHA-256 de la clave pública del firmante #1: d878ba65ddcd7bbd0d9fd284f0bc61762c7ecb83ecb6c58c8c138939fb661f7f
Digerido SHA-1 de la clave pública del firmante #1: dbf739ed124f07181b3cdd1867bdd0eb63da3d71
Digerido MD5 de la clave pública del firmante #1: 94fcb9a87a8ec48eed706456a93ab0cd
ADVERTENCIA: META-INF/androidx.customview_customview.version no está protegido por firma. Las modificaciones no autorizadas en esta entrada JAR no serán detectadas. Elimine o mueva la entrada fuera de META-INF/.
[...]

Viene una larga lista de advertencias con cada APK. Además, como se indica en los comentarios, Aptoide proporcionó el APK incorrecto: el tamaño del archivo y el número de archivos/carpetas se han actualizado.

¿Alguien sabe qué hacer con esta información?

1 votos

Los comentarios no son para discusiones prolongadas; esta conversación ha sido trasladada a un chat.

1voto

pr0nin Puntos 353

Si tienes varios archivos APK de diferentes fuentes no confiables, es sabio cuestionar su autenticidad. Ya has realizado los pasos básicos para hacerlo, especialmente verificar sus firmas criptográficas usando apksigner es el más importante.

Del resultado de apksigner, la parte más importante es el digest SHA-256 del certificado. Los APK que tengan el mismo hash de certificado SHA-256 están garantizados de provenir del mismo desarrollador (asumiendo que las claves no se han perdido/robado, o que el desarrollador ha vendido el proyecto a otro desarrollador).

En tu caso, las versiones de Evozi y Apkpure tienen el mismo hash, pero el de Aptoide es totalmente diferente, incluso el DN del certificado es totalmente diferente. La razón para esto la explicaré al final de esta respuesta, primero enfócate en Evozi y Apkpure.

Evozi y Apkpure

Sabes que ambas versiones vienen del mismo desarrollador, pero la autenticidad de ese desarrollador aún es desconocida. Como no hay un directorio donde puedas buscar los hashes de certificados de desarrolladores de Android, tenemos que improvisar. Así que buscamos en motores de búsqueda populares como Google el hash de certificado SHA-256 y SHA-1 (SHA-1 ya no es el mejor para la seguridad, pero aún cuesta varios miles de dólares y mucho tiempo romperlo) . Si lo haces, encontrarás un montón de entradas para el hash SHA-1 que pertenecen a sitios de descarga o hilos sobre la aplicación DKB. Y las publicaciones no son todas nuevas, sino que también se remontan, por ejemplo, a 2017, por lo que la probabilidad de que ambos APK de Evozi y Apkpure sean genuinos es alta.

Pero queda la pregunta, ¿por qué son diferentes?

Tienes que saber que hay varias razones por las que son diferentes.

¿Versión interna diferente?

Las aplicaciones de Android tienen dos números de versión: el versionName (una cadena con contenido arbitrario) que se muestra al usuario y un número interno de versionCode que es un número entero que aumenta al menos en uno con cada nueva versión (no se permiten comas, puntos, etc.). Para verificar el versionCode interno tenemos que mirar en el AndroidManifest.xml decodificado de cada APK. En una PC, prefiero Jadx para hacerlo.

Versión de Evozi:

android:versionCode="30044" android:versionName="2.7.2"

Versión de ApkPure:

android:versionCode="30049" android:versionName="2.7.3"

Como puedes ver, ambos APK tienen una versión interna y externa diferente ya que ambos valores de versión son diferentes.

La mayoría de los sitios de descarga de APK no recopilan los archivos APK por sí mismos, en su lugar confían en las cargas de los usuarios. Además, los archivos APK no contienen una fecha de lanzamiento, por lo tanto esos sitios utilizan la fecha de carga como la fecha que muestran. Así que la fecha mostrada en Evozi y ApkPure generalmente es días o incluso semanas después de la fecha oficial de lanzamiento.

Pero hubiera sido posible que solo el versionCode difiera y el versionName sea el mismo. En tal caso, habría dos posibilidades:

  1. Se habían lanzado múltiples versiones sin cambiar el número de versión público, por ejemplo, porque había un error menor que se había corregido en la nueva versión, y el desarrollador decidió que este cambio era demasiado pequeño para un nuevo número de versión.

  2. El ecosistema de Android es muy fragmentado. Se utilizan diferentes versiones de Android y hardware de Android con hardware muy diferente (por ejemplo, tamaño y densidad de pantalla). Originalmente, los APK de Android estaban diseñados para incluir todo para cada configuración de hardware, pero eso aumentaba el tamaño de la aplicación y consumía almacenamiento y tráfico de Internet que era parcialmente innecesario. Así que Google introdujo múltiples características para abordar ese problema. Comenzando por la posibilidad de proporcionar diferentes APK para diferentes tipos o modelos de dispositivos hasta el último sistema en el que el desarrollador carga un paquete de aplicaciones y Google genera el archivo APK final individualmente para cada modelo de dispositivo.

Aptoide

Aptoide, a diferencia de otros sitios que proporcionan archivos APK para descargar, no es un sitio de descarga, en su lugar es una tienda de aplicaciones. Esto significa que la descarga que ofrecen en su sitio web no es la aplicación que has buscado. En su lugar, es la aplicación de la tienda de aplicaciones de Aptoide. Esto explica la firma diferente, el DN del certificado y el contenido completamente diferente del archivo APK descargado.

Pero el archivo APK de Aptoide que has descargado no es solo la aplicación general de la tienda, es una versión especial que contiene los metadatos de la aplicación que querías descargar. Una vez que hayas instalado esta aplicación de la tienda de Aptoide, se abrirá un diálogo y te preguntará si deseas descargar e instalar la aplicación "DKB-TAN2go" vinculada.

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