Inspección estática de paquetes de aplicación Android
El análisis de un archivo APK antes de su instalación constituye una práctica de seguridad fundamental para verificar la integridad del software y proteger la privacidad del dispositivo. El Visor de información de APK funciona como una utilidad de análisis estático que extrae y expone los metadatos técnicos de cualquier paquete de aplicación Android. Este proceso permite contrastar los datos declarados por el archivo con las publicaciones oficiales de los desarrolladores, todo ello sin necesidad de ejecutar o instalar la aplicación en el sistema.
El examen se realiza de forma local en el navegador web del usuario a través de un Worker. Al no transferir datos a servidores externos ni ejecutar el código del paquete, se garantiza la absoluta privacidad del análisis.
Requisitos de entrada y límites del analizador
La herramienta está diseñada para procesar archivos individuales bajo unas reglas estrictas de formato y tamaño para asegurar la estabilidad del navegador:
- Formato admitido: Exclusivamente archivos con la extensión
.apk. - Límite de tamaño: Hasta un máximo de 500 MB. Si un archivo supera este límite, el sistema detiene el proceso y muestra el mensaje de error:
"Este archivo supera los 500 MB, un tamaño superior al que una pestaña del navegador puede inspeccionar con seguridad.". - Cantidad de archivos: Se procesa un único archivo por operación. En caso de arrastrar o seleccionar varios elementos de forma simultánea, el visor analiza únicamente el primero de ellos y muestra la advertencia:
"Solo un archivo a la vez; inspeccionando el primero.".
Control de errores y formatos no compatibles
El visor identifica estructuras de archivos incompatibles o corruptas y emite respuestas específicas para cada escenario:
- Paquetes divididos: Los formatos como XAPK o APKM no se pueden procesar directamente. Ante ellos, el visor devuelve el mensaje:
"Este es un paquete dividido XAPK, un contenedor con varios APK. Extrae el APK base e inspecciona ese archivo en su lugar.". - Formatos de publicación: Los archivos de desarrollo para la tienda de aplicaciones se rechazan con el texto:
"Este es un Android App Bundle (.aab), un formato de publicación y no un APK instalable. Inspecciona el APK compilado en su lugar.". - Archivos sin estructura Android: Si el archivo no es un paquete válido, se muestra:
"Esto no parece un APK: no se ha encontrado ningún archivo AndroidManifest.xml legible en su interior.". - Archivos corruptos: Si el paquete está incompleto o dañado, se indica:
"El paquete parece dañado o incompleto, por lo que no se ha podido leer su contenido.". - Fallos de lectura físicos: Ante problemas de acceso al archivo en el disco local, el sistema muestra:
"No se ha podido leer el archivo. Selecciona otro.". Cualquier otro error indeterminado durante la inspección activa el mensaje:"La inspección ha fallado. Prueba con otro archivo.".
Estructura del informe técnico generado
Una vez completado el análisis, el visor genera un informe estructurado en secciones técnicas que detallan la composición interna del APK.
Requisitos (Requisitos)
Esta sección detalla la compatibilidad del paquete con las diferentes versiones del sistema operativo Android:
- Android mínimo: Indica la versión mínima requerida para ejecutar la aplicación. Se muestra bajo el formato
Android ‹version› (API ‹level›)o simplementeAPI ‹level›. - Android de destino: La versión de la API para la que se diseñó y probó la aplicación, mostrada como
Android ‹version› (API ‹level›)oAPI ‹level›. - SDK máx.
‹n›: Si el manifiesto de la aplicación restringe la instalación a un límite superior de API, se detalla en este campo.
Permisos (Permisos)
Muestra la lista completa de permisos que la aplicación solicita al sistema operativo. Para facilitar la auditoría de seguridad, los permisos que Android clasifica como de acceso a datos privados (tales como la ubicación, la cámara o los contactos) se priorizan al principio de la lista y se marcan visualmente con la etiqueta Peligrosos.
Componentes (Componentes)
Declara los puntos de entrada y elementos de ejecución de la aplicación, organizados en cuatro categorías con un límite de visualización de 100 elementos por grupo. Si se supera dicha cifra, se añade la etiqueta +‹count› más. Los componentes que pueden ser iniciados por aplicaciones externas se identifican con la etiqueta exportado:
| Categoría | Descripción y etiquetas |
|---|---|
| Activities | Pantallas de la interfaz de usuario. Muestra la etiqueta exportado si corresponde. |
| Services | Procesos en segundo plano sin interfaz. Muestra la etiqueta exportado si corresponde. |
| Receivers | Receptores de eventos del sistema. Muestra la etiqueta exportado si corresponde. |
| Providers | Proveedores de datos compartidos. Muestra la etiqueta exportado, la autoridad del proveedor (provider authority) o Ninguno. |
Código nativo (Código nativo)
Detalla los tipos de procesador (ABIs) compatibles con el paquete y el número de librerías nativas compiladas que incluye para cada arquitectura.
Recursos (Recursos)
Cuantifica los elementos de soporte y archivos de código incluidos en el paquete:
- Densidades de pantalla: Resoluciones de pantalla para las que se incluyen recursos gráficos optimizados.
- Archivos de recursos: Cantidad de archivos de configuración y diseño XML.
- Archivos de recursos (assets): Archivos auxiliares integrados en la carpeta de activos.
- Archivos de código (.dex): Número de archivos ejecutables Dalvik Executable que contienen el código compilado de la aplicación.
- Archivos en el paquete: El recuento total de archivos individuales que componen el APK.
Firmas y hashes de seguridad
La verificación de la identidad del desarrollador y de la integridad del archivo se realiza mediante el análisis de las firmas digitales y el cálculo de huellas criptográficas.
Firmas (Firmas)
El visor extrae los metadatos de los certificados X.509 presentes en los bloques de firma v1 (PKCS#7) y en los bloques de firma de APK (v2, v3 y v3.1). Para cada firmante identificado como Firmante ‹n›, se muestran los siguientes campos:
- Sujeto
- Emitido por
- Número de serie
- Válido desde
- Válido hasta
- Algoritmo de firma
- Algoritmo de clave
- Huellas digitales en formatos MD5, SHA-1 y SHA-256.
Si el archivo carece de firmas válidas, se muestra la advertencia: "No se ha encontrado ningún bloque de firma reconocido; es posible que el paquete no esté firmado o se haya vuelto a empaquetar.". El visor no realiza una verificación criptográfica de la cadena de confianza ni valida la identidad real del publicador en el mundo físico.
Huellas del archivo (Huellas del archivo)
Independientemente de las firmas internas, la herramienta calcula los hashes globales del archivo APK introducido. Durante este proceso, la interfaz muestra el progreso mediante el indicador Calculando hashes del archivo — ‹percent›%. Al finalizar, expone los valores hash MD5, SHA-1 y SHA-256 del archivo analizado.
Flujo de estados de la interfaz
El visor comunica de forma precisa el estado del proceso de análisis a través de los siguientes indicadores de progreso y acciones:
- Estado inicial:
Listo. Arrastra un APK para inspeccionarlo.junto al área de interacción que muestraArrastra un.apk aquí o haz clic para elegiry la aclaraciónUn archivo.apk, de hasta 500 MB. - Lectura:
Leyendo ‹name›…mientras se transfieren los datos al Worker local. - Procesamiento criptográfico:
Calculando hashes del archivo — ‹percent›%. - Análisis de estructura:
Analizando el paquete…durante la lectura del manifiesto y los componentes. - Finalización:
Informe listo.. En este punto se habilitan los botonesDescargar informe(que al pulsarse muestra el mensajeInforme descargado.) yBorrar(que restablece la interfaz mostrandoBorrado.).
Preguntas frecuentes
¿Qué se puede averiguar de un APK sin instalarlo?
Bastantes cosas: el nombre de paquete y la versión de la app, las versiones de Android que requiere, todos los permisos que solicita, las pantallas y componentes en segundo plano que declara, los tipos de procesador para los que incluye código nativo y los certificados con los que se ha firmado.
¿Esta herramienta puede decirme si un APK es malware?
No; desconfía de cualquier herramienta que prometa un veredicto a partir de un análisis rápido. Aquí obtienes datos objetivos: permisos, componentes, firmantes y hashes. Compáralos con lo que publica el desarrollador y considera que unos permisos inesperados o un firmante distinto al lanzamiento oficial son motivos para descartarlo.
¿Qué archivos son compatibles?
Archivos APK individuales de hasta 500 MB. Los paquetes divididos (XAPK, APKM) y los Android App Bundles (.aab) son contenedores o formatos de publicación y no un único paquete instalable, por lo que se rechazan con un mensaje claro en lugar de ofrecer un informe confuso.
¿Qué indican los datos de firma?
Todas las apps Android están firmadas y el certificado identifica quién las ha publicado. Verás qué esquemas de firma incluye el paquete (v1, v2, v3) y el asunto de cada firmante, su periodo de validez y sus huellas MD5, SHA-1 y SHA-256. Dos APK con huellas coincidentes proceden del mismo editor; decidir si confías en él depende de ti.
¿Qué significa la etiqueta "Dangerous" en un permiso?
Es la clasificación propia de Android: los permisos peligrosos pueden acceder a datos privados (ubicación, contactos, cámara, micrófono, almacenamiento), por lo que el sistema pide confirmación al usuario antes de concederlos. La etiqueta no es una acusación; que una app de mapas pida la ubicación es normal. Simplemente señala los permisos que conviene leer dos veces.