# Usar Frida incorporado

FIRERPA incorpora la última versión de Frida, por lo que no necesita iniciar frida-server por su cuenta. Nuestro Frida incorporado ya cuenta con varios parches de ocultación de código abierto, así como diversas funciones de ocultación adicionales que hemos añadido, por lo que no debe preocuparse por la detección de Frida. Si nuestro Frida incorporado es detectado, significa que casi todos los frida-server que pueda descargar también serán detectados. Así que puede usarlo con confianza, sin preocuparse por estos detalles.

```{hint}
A partir de la versión 7.18 de FIRERPA, el FRIDA incorporado requiere un parámetro de token para conectarse. Por supuesto, la biblioteca cliente ya se ha encargado de todo por usted. Si está utilizando una versión anterior a la 7.18, consulte la [documentación de versiones anteriores](https://github.com/firerpa/lamda/tree/5.0#连接内置的-frida) para conocer el método de uso.
```

```{attention}
A partir de la versión 9.0, el frida 17.x que utilizamos incorporado requerirá que empaquete `frida-java-bridge` en sus scripts usted mismo; de lo contrario, ocurrirán errores relacionados con `Java not defined`. Este es un cambio oficial de Frida. Según las notas de cambio oficiales, necesitará crear un nuevo proyecto de Node.js e importar el `java bridge`. Para más detalles, consulte https://github.com/oleavr/frida-agent-example o utilice nuestro script `tools/frida_script_generate.py` para reempaquetar sus scripts JS existentes.
```

## Uso a través de código

Al usar la API del cliente de FIRERPA, simplemente necesita usar `d.frida` como se muestra a continuación para obtener una instancia conectada a frida-server, sin necesidad de construir la conexión usted mismo usando la biblioteca de Frida.

```python
conn = d.frida
conn.enumerate_processes()
```

Por supuesto, si desea comprender su implementación subyacente, también puede consultar el siguiente código.

```python
# Obtener el token dinámico
token = d._get_session_token()

manager = frida.get_device_manager()
conn = manager.add_remote_device("192.168.0.2:65000", token=token)
conn.enumerate_processes()
```

El resto depende de cómo lo utilice usted. Ahora ha obtenido la instancia correctamente.

## Uso a través de la línea de comandos

El uso a través de la línea de comandos puede ser un poco más complejo, ya que también debemos garantizar la seguridad de su dispositivo. Queremos recordarle que no se limite por los comandos que encuentre en otros artículos. Debe tener en cuenta que muchos comandos de Frida en otros artículos incluyen un parámetro `-U`, que nosotros no usamos aquí. Por lo tanto, si no puede conectarse, asegúrese de que su comando siga estrictamente el ejemplo.

Antes de comenzar, nos gustaría mencionar que recomendamos encarecidamente usar comandos como `frida`, `frida-itrace`, `frida-trace`, `frida-ps`, etc., a través del escritorio remoto. En este entorno, no necesita realizar ninguna operación adicional; simplemente ejecute `frida` sin necesidad de proporcionar otros parámetros de conexión como `-U`, `-H`, etc.

![Frida](/assets/images/frida-remote-desktop.png)

Dado que ha llegado hasta aquí, significa que todavía desea usar el comando en su computadora. Ahora, necesita recopilar cierta información según su instalación. Si su FIRERPA se inició con un certificado de servicio, necesitará tener ese archivo a mano. Además, necesitará la dirección IP del dispositivo al que desea conectarse y el puerto del servicio FIRERPA (por defecto, 65000). Tenga en cuenta que este no es el puerto 27042 de Frida, sino el puerto del servicio FIRERPA. Solo necesita conectarse a FIRERPA.

Primero, necesita usar la API para obtener el token actual. Este token es una cadena fija de 16 caracteres, como `czvpyqg82dk0xrnj`. Entendemos que este método puede ser un poco engorroso y podríamos realizar cambios para facilitar su uso en el futuro. Esta es también la razón por la que recomendamos usar los comandos de Frida en el escritorio remoto.

```python
token = d._get_session_token()
print (token)
```

Ahora que ha obtenido un token de la API anterior, supongamos que es `czvpyqg82dk0xrnj`. Comencemos a escribir el comando de Frida.
Para todas las herramientas de línea de comandos oficiales de Frida, por defecto, solo necesita agregar los parámetros `-H 192.168.0.2:65000` y `--token xxxxxxxxxxxxxxxx`, como se muestra a continuación. **Tenga mucho, mucho, mucho cuidado** de que no hay un parámetro `-U` aquí.

```bash
frida -H 192.168.0.2:65000 -f com.android.settings --token xxxxxxxxxxxxxxxx
```

Si su servidor FIRERPA se inició con un certificado de servicio, también deberá agregar el parámetro `--certificate` al comando.

```bash
frida -H 192.168.0.2:65000 -f com.android.settings --certificate /path/to/lamda.pem --token xxxxxxxxxxxxxxxx
```

Probablemente haya notado que solo hay tres diferencias: `-U` se convierte en `-H` porque necesitamos conectarnos a través de la red en lugar de USB; se agrega el parámetro `--token`; y si el servidor habilitó un certificado de servicio, también se agrega el parámetro `--certificate`. Esto es para garantizar la seguridad de su dispositivo y evitar el acceso no autorizado.

## Uso a través de la línea de comandos (objection)

Para otras herramientas como objection, generalmente también se proporcionan los parámetros mencionados anteriormente. Sin embargo, la mayoría de las herramientas no estándar no agregan estos parámetros por completo. Actualmente, solo hemos aplicado un parche a objection, que no afectará su uso original. Pero como objection no se ha actualizado en mucho tiempo, no hemos enviado el parche al repositorio original. Puede descargar nuestro parche [objection-1.11.0-command-patch.diff](https://github.com/firerpa/lamda/blob/8.0/tools/objection-1.11.0-command-patch.diff) y aplicarlo al directorio de código de su instalación de objection (puede encontrar la ruta de instalación con el comando `pip3 show objection`).

Después de eso, puede usarlo de la siguiente manera. Como puede ver, solo se ha agregado el parámetro `--token`.

```bash
objection -N -h 192.168.0.2 -p 65000 --token xxxxxxxxxxxxxxxx explore
```

O si el servidor se inició con un certificado de servicio, también debe agregar `--certificate` al comando.

```bash
objection -N -h 192.168.0.2 -p 65000 --certificate /path/to/lamda.pem --token xxxxxxxxxxxxxxxx explore
```

## Exponer interfaces de la aplicación

Este párrafo ha sido movido a la sección `Usar Frida para exportar interfaces`.