La última actualización de Google Maps no está disponible en mi país, así que descargué una versión buscando en Google "Google Maps 5.4.0 apk". De hecho, lo encontré, pero ahora me pregunto cómo puedo saber si esta es realmente la misma versión que en el mercado.
¿Cómo puedo estar seguro de que no ha sido manipulado? ¿Las aplicaciones están firmadas de alguna manera? ¿Hay alguna forma de verificar las firmas?
m.google.com/maps
¿le ofrece un enlace de descarga o algo similar?Respuestas:
Dejando de lado el debate sobre la legitimidad de instalar esa aplicación en su teléfono, la cuestión de la verificación es algo que he querido entender por un tiempo, y me ha pedido que intente descubrir una posible forma de verificar quién firmó un apk.
Las aplicaciones de Android están firmadas de la manera normal de los archivos .jar (.apk es realmente un .jar especial que es solo un .zip especial), sin embargo, puede que no sea trivial rastrear la autenticidad de los certificados a menos que tenga algo conocido comparar con. Eso es básicamente lo que hace el teléfono en sí mismo: verifica que algo que dice ser de la misma parte que algo que ya está en el teléfono realmente es, el teléfono no se niega a instalar cosas con firmantes desconocidos, solo puede (objetar / borrar la aplicación datos de) falsificaciones aparentes cuando algo nuevo no coincide con algo viejo que afirma.
Necesitarás tener jarsigner y keytool. Creo que estos provienen del JDK, que es un requisito previo para el SDK de Android en lugar del SDK en sí.
Primero debes intentar verificar la clave pública contenida en el archivo .apk. Por lo general, esto está en META-INF / CERTS.RSA, pero puede estar en otro archivo: descomprima -l le dirá. Desea ver lo que puede averiguar al respecto:
Eso arrojará mucha información sobre quién dice ser el firmante. Aparentemente, algunos certificados están firmados por partes conocidas, pero sin descubrir cómo rastrear eso, sospecho que podría hacer algo como esto:
Si tiene un apk de confianza conocido del mismo autor que utilizó el mismo certificado. Supongo que los certificados que tienen la misma suma MD5 son suficientes.
Suponiendo que haya decidido confiar en el certificado, puede ver si se ha utilizado para firmar cada uno de los archivos dentro del archivo .apk
(Si hay más de un archivo .RSA en el archivo, debe agregar el indicador -certs para indicar qué certificado (s) se han utilizado para firmar cada archivo, de modo que pueda estar seguro de que es el certificado que verificó)
fuente
Hay (ahora) una
apksigner
herramientabuild-tools
que hace lo que quieres. De los documentos :fuente
También puede intentar cargar el APK en el antivirus gratuito VirusTotal.com . Generará un hash único para el APK y si otros ya lo han subido para probarlo (muy probablemente), entonces tendrá más idea de que el APK es válido.
El servicio también escaneará el APK con más de 60 escáneres de virus y le informará si cree que tiene firmas similares a los virus ya encontrados.
fuente
Para comparar certificados de un archivo apk sospechoso, tal vez una idea es descargar su versión en la Play Store oficial en su teléfono, hacer una copia de seguridad en su computadora e ir al directorio de copia de seguridad, seleccionar el archivo apk en cuestión y hacer las mismas comprobaciones. También puede ver los certificados de Google haciendo la verificación en una aplicación predeterminada del dispositivo (como cualquier com.google.android. * Apk)
fuente
La forma correcta de verificar un archivo APK es utilizarlo
apksigner
.apksigner
es parte de las herramientas de compilación de Android, por lo tanto, puede encontrar múltiples versiones instaladas, una para cada versión de herramientas de compilación instalada.Un ejemplo de ruta dentro del SDK de Android
apksigner
es:Ejecute apksigner de esta manera:
Ahora ha verificado el APK, pero aún no sabe si puede confiar en la persona / organización que ha firmado el archivo APK. Esto se debe a que en las firmas de Android APK se utilizan por definición certificados autofirmados. Si puede confiar en un certificado, es una pregunta difícil. La única forma es verificar las otras aplicaciones que se han firmado con el mismo certificado.
La única forma en que sé hacerlo es usar el servicio de rastreo de PlayStore androidobservatory.org. Tiene una API para verificar qué aplicaciones han sido firmadas por el mismo certificado utilizando el resumen SHA-1 del certificado:
Editar: apkmirror.com también permite buscar el resumen del certificado. Simplemente ingrese el resumen de certificado SHA-1 o SHA-256 (sin dos puntos ni espacios) en el campo de búsqueda:
En esta página puede ver todos los demás archivos APK en Google Play Store que están firmados con el mismo certificado.
fuente