> For the complete documentation index, see [llms.txt](https://mobile.mrw0l05zyn.cl/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mobile.mrw0l05zyn.cl/herramientas-transversales/frida.md).

# Frida

## Instalación y configuración

Instalación de Frida.

```shell
# Instalación de Frida sin entorno virtual de Python
pip3 install frida-tools

# Instalación de Frida en entorno virtual de Python
mkdir frida && cd frida
python -m venv venv-frida
source venv-frida/bin/activate
pip3 install frida-tools

# Instalar la versión del cliente Frida correspondiente a la del servidor Frida
pip3 install frida-tools
pip3 install frida==<version-frida-server>
```

Obtener versión de Frida instalado.

```shell
frida --version
```

### Android

1\) Descargar Frida-server según la arquitectura del dispositivo Android y versión de Frida instalada previamente.

* <https://github.com/frida/frida/releases>

```shell
# Obtener arquitectura del dispositivo Android
adb shell getprop ro.product.cpu.abi
```

2\) Descomprimir y renombrar Frida-server.

```shell
unxz <frida-server.xz>
mv <frida-server> frida-server
```

3\) Transferencia de Frida-server al dispositivo Android y asignación de privilegios.

```shell
adb push frida-server /data/local/tmp/
adb shell "su -c chmod 755 /data/local/tmp/frida-server"
```

4\) Ejecución de Frida-server.

```shell
adb devices -l

# Iniciar Frida-server para conexión desde el dispositivo vía USB
adb shell "su -c /data/local/tmp/frida-server &"
# Iniciar Frida-server para conexión remota
adb shell "su -c /data/local/tmp/frida-server -l <device-IP-address> &"
```

#### Troubleshooting <a href="#android-troubleshooting" id="android-troubleshooting"></a>

1\) Error "Unable to find copied methods in java/lang/Thread"

Si al iniciar Frida-server se obtiene el siguiente error:

{% code overflow="wrap" %}

```json
{"type":"error","description":"Error: Unable to find copied methods in java/lang/Thread; please file a bug","stack":"Error: Unable to find copied methods in java/lang/Thread; please file a bug\n at /internal-agent.js:1:47232\n at Ie.perform (/internal-agent.js:1:25891)\n at Gn (/internal-agent.js:1:45951)\n at Md (/internal-agent.js:1827:1640)\n at Uo (/internal-agent.js:1827:1258)\n at Function.build (/internal-agent.js:1827:85)\n at t._make (/internal-agent.js:1828:18234)\n at t.use (/internal-agent.js:1828:17033)\n at /internal-agent.js:1837:6963\n at Ie.perform (/internal-agent.js:1:25891)","fileName":"/internal-agent.js","lineNumber":1,"columnNumber":47232}
```

{% endcode %}

Solución:

1\) Desinstalar el paquete `com.google.android.art`.

{% code overflow="wrap" %}

```shellscript
adb shell pm uninstall com.google.android.art
```

{% endcode %}

2\) Reiniciar el dispositivo móvil.

3\) Volver a iniciar Frida-server.

### iOS

#### Cydia (App Store de tercero)

1\) Agregar repositorio de Frida a Cydia (App Store de tercero).

* Cydia -> Fuentes -> Editar -> Añadir -> <https://build.frida.re> -> Añadir fuente

<figure><img src="/files/ZQgOnYaXwQfSskn9U9Fa" alt=""><figcaption></figcaption></figure>

2\) Instalar Frida en el dispositivo desde Cydia (App Store de tercero).

* Cydia -> Buscar -> Frida -> Instalar

<figure><img src="/files/io5Ud3oAKcv6H5mvjdtE" alt=""><figcaption></figcaption></figure>

#### Manual

1\) Conexión SSH al dispositivo.

```shell
ssh root@<device-ip-address>
```

2\) Descarga de Frida-server.

* <https://github.com/frida/frida/releases>

```shell
cd /tmp/
wget https://github.com/frida/frida/releases/download/<version>/frida_<version>_iphoneos-arm.deb
```

3\) Instalación de Frida-server.

```shell
dpkg -i frida_<version>_iphoneos-arm.deb
```

4\) Ejecución de Frida-server para conexión remota.

```shell
# Establecer dirección IP a Frida-server en dispositivo (listen)
frida-server -l <device-IP-address>
```

## Comprobación de ejecución correcta de Frida-server

```shell
# Conectarse a Frida-server desde el dispositivo vía USB
# y listar procesos en ejecución
frida-ps -U

# Conectarse remotamente a Frida-server y listar procesos en ejecución
frida-ps -H <device-IP-address>
```

## Comandos generales

```shell
# Listar dispositivos
frida-ls-devices

# Listar procesos en ejecución
frida-ps -U
frida-ps -H <device-IP-address>

# Listar aplicaciones en ejecución
frida-ps -Ua
frida-ps -H <device-IP-address> -a

# Listar aplicaciones instaladas
frida-ps -Uai
frida-ps -H <device-IP-address> -ai

# Iniciar un nuevo proceso / aplicación (spawning)
frida -U -f <app-package-name>
frida -H <device-IP-address> -f <app-package-name>

# Atachar a un proceso / aplicación (attaching)
frida -U <app-name>
frida -U -p <PID>
frida -U -F <app-package-name>
frida -H <device-IP-address> <app-name>
frida -H -p <PID>
frida -H <device-IP-address> -F <app-package-name>
```

* -U = conectarse a Frida-server desde el dispositivo vía USB.
* -H = conectarse remotamente a Frida-server.

## Frida CodeShare

* <https://codeshare.frida.re/>
