Frida en Android: Setup completo para dispositivos físicos
Guía actualizada para configurar y utilizar Frida en dispositivos Android físicos rooteados.
Incluye instalación, uso básico, resolución de errores comunes y consideraciones para entornos Android 13-15.
Tabla de Contenidos
Introducción
Frida permite instrumentar aplicaciones Android en tiempo real para:
- Interceptar llamadas de función
- Modificar comportamiento de aplicaciones
- Bypassear protecciones de seguridad
Usaremos Magisk para mantener root y Frida Server para permitir la inyección de scripts desde nuestro PC.
Requisitos Previos
- Dispositivo Android rooteado con Magisk
- ADB instalado y configurado en PATH
- Python 3.9+
- Cable USB y depuración habilitada
Equipo de pruebas usado:
- Magisk: v28.1 (28104)
- Modelo: Xiaomi Redmi Note 8 (M1908C3JGG)
- Arquitectura: arm64-v8a
- Android: 13 (API 33)
Instalación
Instalar ADB
Descarga Platform Tools, extrae e incorpora la carpeta a tu PATH.
Verifica:
adb version
Preparación del entorno en el PC
Instala Frida CLI:
pip install frida-tools
Clave en 2025:
frida --version debe coincidir EXACTAMENTE con la versión del frida-server que descargues de Releases.
Ejemplo: Si el cliente es 17.2.15, descarga frida-server-17.2.15-android-arm64.
Pasos en el dispositivo
Subir y arrancar frida-server:
adb push frida-server /data/local/tmp/
adb shell
su
chmod 755 /data/local/tmp/frida-server
/data/local/tmp/frida-server &
Verificar:
frida-ps -U
Uso básico
Ejecutar script:
frida -U -f com.app.objetivo -l script.js
Ejemplo de script.js:
console.log("[+] Frida conectado");
Java.perform(function(){
console.log("[+] Dentro de Java");
});
Troubleshooting
Error: “Failed to spawn…”
Causas comunes:
- Mismatch de versión entre
frida-toolsyfrida-server - Arquitectura incorrecta (
arm64,armeabi-v7a, etc.) - Políticas de seguridad en Android 12+
Solución recomendada (2025):
- Verificar versiones:
frida --version
adb shell getprop ro.product.cpu.abi
- Asegurarte de usar el frida-server correcto (versión y arquitectura).
- Matar instancias previas:
adb shell su -c "pkill frida-server"
- Reiniciar frida-server y probar de nuevo.
Error: “Unable to perform state transition”
En Android 14+, ART bloquea hooks de Frida.
Antes de recurrir a cambios extremos:
- Actualiza Frida a la última versión.
Solución extrema (solo si todo lo anterior falla)
Algunas apps solo funcionan si eliminas com.google.android.art:
adb shell su -c "pm uninstall com.google.android.art"
Esto puede afectar la estabilidad del sistema. Haz backup antes.
Evidencias
Salida exitosa de frida-ps -U:
PID Name
---- ---------------------
1234 com.android.chrome
5678 com.whatsapp
9012 com.app.objetivo
Flujo de pruebas
-
Verificación inicial:
- Dispositivo rooteado con Magisk
- ADB funcional y dispositivo detectado
- Frida instalado y versiones coincidentes
-
Preparación:
- Subir frida-server al dispositivo
- Arrancar frida-server con permisos root
- Verificar procesos visibles con
frida-ps -U
-
Instrumentación:
- Seleccionar aplicación objetivo
- Crear script de instrumentación
- Ejecutar con spawn o attach según necesidad
-
Debugging:
- Verificar logs en tiempo real
- Ajustar scripts según comportamiento observado
- Documentar hallazgos y bypasses exitosos
Este flujo garantiza un approach sistemático para las pruebas de seguridad con Frida.