Para la misma aplicación, tengo:
- un APK de una tienda de aplicaciones,
- lo que se afirma que es el código fuente de la misma versión. Con un guión y estructura de construcción de Gradle bastante habitual.
Quiero verificar si el APK realmente se creó a partir de ese código fuente o no.
¿Cómo verificar eso?
Notas:
- El APK no está ofuscado.
- No tengo motivos para confiar en la firma de nadie. Solo confío en el código fuente.
- Ya construí la aplicación para mí, pero ahora quiero saber si el APK estaba bien o no.
- Preferiblemente con herramientas de línea de comandos de Linux, pero cualquier herramienta está bien.
diff
método parece ordenado ... pero ¿qué pasa si los chicos de la tienda de aplicaciones ofuscaron el APK mientras lo compilaban?
.apk
archivos, luego ejecute un diff contra los directorios resultantes. La única diferencia debería ser la firma (que no puede coincidir por razones obvias). Pensando en ello: simplemente descomprimir los.apk
archivos y hacer una diferencia binaria debería hacer lo mismo. Por supuesto, ambos requerirían haber usado las mismas versiones de biblioteca, etc. al compilar en primer lugar :)