No se puede saber si el .apk
originalmente vino de Playstore - pero se puede saber si coincide con el que está disponible en Playstore. Esto es lo que necesitas:
- el
.apk
en cuestión
- el
.apk
de la misma aplicación en la misma versión de Playstore
- openssl
Descomprimir ambos .apk
(cada uno en su propio directorio), y comparar sus certificados (almacenados en el META-INF/
directorio. Los detalles de una comparación exhaustiva pueden ser, por ejemplo se encuentra aquí . El comando que necesitas es:
openssl pkcs7 -inform DER -in META-INF/CERT.RSA -noout -print_certs -text
Alternativamente, si no tiene openssl instalado sino el JDK de Oracle:
keytool -printcert -file META-INF/CERT.RSA
o
jarsigner -verify -certs -verbose ../Example.apk
Si los certificados coinciden, ambos archivos APK fueron firmados con la misma clave. A menos que la clave del desarrollador se vea comprometida, eso debería significar que el APK potencialmente cargado de forma lateral debería estar bien (no hay garantías de que el propio desarrollador no haya jugado, pero si el tamaño y el MD5 del APK también coinciden, yo diría que es seguro).
1 votos
La detección de firmas no ayuda mucho a detectar cómo se instaló una aplicación. Pero está la propiedad "installerPackageName" que te dice que al usar
adb dumpsys package
(lleva el nombre del paquete de la app que lo ha instalado, que sería el de playstore cuando se ha usado ese, o F-Droids, etc., o "fuente desconocida" cuando se ha cargado completamente de forma lateral.0 votos
@Izzy Me preocupa más lidiar con el apk en sí. Si utiliza un grabber apk o adb es irrelevante si el apk es sideloaded. Quiero la verificación de que es de Play store.