
Una ventana de herramienta de UI de Frida dentro de PyCharm / IDEs JetBrains.
中文 | [English](https://github.com/yilongmd/zafrida-ui/blob/main/README.en-US.md)

ZAFrida UI - Complemento de Frida para PyCharm
===============
Versión actual: 0.3.8
[](LICENSE)
[](https://github.com/yilongmd/zafrida-ui)
[](https://plugins.jetbrains.com/)
[](https://github.com/yilongmd/zafrida-ui)
## Actualizaciones principales de 0.3.8
- El panel Session divide «Dispositivo» y «Modo de conexión» en dos filas de selección independientes: la fila Device solo lista dispositivos reales, la fila Mode selecciona USB / Remote / Gadget y el endpoint. El reenvío de puertos adb, Force Stop y Open App del bucle Remote/Gadget siempre actúan sobre el teléfono actualmente seleccionado, sin reutilizar por error dispositivos anteriores.
- Al abrir y actualizar dispositivos por primera vez, se inicia automáticamente el servidor adb que no esté en ejecución, sin necesidad de ejecutar manualmente `adb devices`.
- Cuando un dispositivo guardado no está en línea, se muestra el marcador «No conectado» y se bloquean las operaciones relacionadas; si solo hay un dispositivo USB conectado, se cambia automáticamente a él y se notifica en la Console.
- Debajo de la fila Mode se muestra la ruta adb/frida realmente ejecutada; en modo Gadget el nombre del paquete Target es de solo lectura pero se puede seleccionar y copiar.
- El `/state` de la HTTP API añade el resultado de resolución `connection`; `device-select --host` sigue disponible pero está obsoleto, para endpoints use `mode-set --host/--port`.
## Actualizaciones principales de 0.3.7
- Cada ZAFrida Project puede seleccionar o compartir de forma independiente el entorno Python/Frida; por defecto usa el intérprete del proyecto PyCharm actual, y admite entornos locales como venv, Conda, uv, Poetry, Pipenv, Hatch, etc.
- Rediseño de la Session UI y Project Settings, mostrando completa la información de versión del plugin, Python y Frida, y optimizando el panel de logs adaptativo y arrastrable y el estado de sesión.
- Soporte completo para `.js` / `.ts`, Frida 16/17, cambio de entorno entre múltiples proyectos, y los tres flujos de conexión USB, Remote y Gadget.
- Refuerzo de la HTTP API local, CLI y Skill en chino para la recuperación de dispositivos, espera de sesión y logs incrementales; se elimina la capa de adaptación MCP duplicada e inestable.
Introducción al proyecto
-----------------------------------
<h3 align="center">Herramienta gráfica de Frida diseñada para PyCharm/IntelliJ</h3>
ZAFrida UI es un complemento de operación gráfica de Frida integrado en PyCharm y la serie de IDE de JetBrains. Está diseñado para resolver los problemas de la engorrosa operación por línea de comandos de Frida y la gestión desordenada de scripts, ofreciendo un conjunto completo de **interfaz de interacción UI** para gestionar dispositivos, procesos, scripts y logs.
El punto clave es su **sistema de gestión de plantillas «estilo casilla de verificación»**: el usuario puede, marcando/desmarcando casillas, insertar dinámicamente fragmentos de código en el script principal o comentarlos, logrando así un ensamblaje de scripts Hook «tipo bloques de construcción». Además, el complemento incorpora una completa **gestión por proyectos** (`zafrida-project.xml`), que permite cambiar rápidamente entre configuraciones de múltiples dispositivos y entornos.
ZAFrida no reemplaza a Frida, sino que actúa como una potente interfaz UI para `frida-tools`, conectándose sin problemas con su entorno Python y Frida existente.
**Wiki simplificada**: [Wiki simplificada de ZAFrida UI (BBS)](https://github.com/yilongmd/zafrida-ui/blob/main/zafrida_ui_wiki_bbs_zh.md) (esta es una Wiki más sencilla)
**Tutorial de uso detallado**: [Wiki del tutorial de uso detallado de ZAFrida UI](https://github.com/yilongmd/zafrida-ui/blob/main/ZAFridaUI_Wiki_zh.md)
## Demostración

Inicio rápido
-----------------------------------
1. **Instalar el complemento**: busque "ZAFrida" en el marketplace de complementos del IDE o instálelo desde disco.
2. **Configurar el entorno predeterminado**: por defecto se usa el Python Interpreter del proyecto PyCharm actual; en `Settings` global -> `Tools` -> `ZAFrida` solo se conservan los valores predeterminados de nombre/ruta de herramientas.
3. **Crear un proyecto**: clic derecho en la vista de proyecto -> `New Frida Project`.
* Si el proyecto necesita una versión diferente de Frida, abra ZAFrida `Project Settings`, seleccione el intérprete de Python o el directorio de entorno y haga clic en `Test`.
4. **Escribir/seleccionar el script**: en el panel Run seleccione su `agent.js` o `agent.ts`.
5. **Depuración de Hook**:
* Conectar el dispositivo (USB o Remote o Gadget).
* Seleccionar el proceso o nombre de paquete objetivo.
* Hacer clic en **Run**.
6. **Usar plantillas**: cambie a la pestaña `Templates`, marque las funciones Hook que necesite (como "SSL Pinning Bypass") y el código se inyectará automáticamente en su script.
7. **Automatización con Skills (opcional)**: desactivada por defecto. Vaya a `Settings/Preferences -> ZAFrida -> Skills HTTP API`, marque `Enable Skills` para iniciar automáticamente la API local (también puede `Start/Stop` manualmente); ubicaciones del CLI y las plantillas:
* Skill y CLI principal: `skills-template/zafrida-http-control/`
* Lanzador compatible con la ruta antigua: `skills-cli/zafrida_skill_cli.py`
Código QR del grupo de intercambio
-----------------------------------
<img src="https://assets.kitploit.com/production/public/readmes/11475/af2e178a9eee68ad3cbdf0c5b002b39f4c18f0128b73575324967291f19eeddc.jpg" alt="ZAFrida与逆向交流群二维码" width="260" />
Características
-----------------------------------
* **Gestión de dispositivos y procesos**
Integra `frida-ls-devices` y `frida-ps`, permite actualizar la lista de dispositivos con un clic y ver procesos en ejecución, Apps en ejecución o aplicaciones instaladas.
* **Conexión multimodo**
Soporte completo de los modos **USB / Remote / Gadget**, con Host y Port remotos personalizables, sin necesidad de componer manualmente parámetros de línea de comandos complejos.
* **Ejecución interactiva de scripts (Run / Attach)**
* Admite las dos acciones de ejecución **Run (Spawn por defecto)** y **Attach**, en lugar de un simple «cambio de modo».
* Admite **Force Stop** para detener forzosamente la aplicación objetivo.
* Salida de log integrada en la consola, con guardado automático de logs en el directorio del proyecto `zafrida-logs/`.
* **Menú contextual del editor JS / TypeScript (importante)**
* Con clic derecho en el área de edición de archivos Frida `.js` o `.ts`, puede seleccionar directamente:
* **Run Frida Script**: ejecuta el archivo actual como script principal (Spawn por defecto).
* **Attach Frida Script**: inyecta el archivo actual como script adjunto en el proceso objetivo ya en ejecución.
* Antes de ejecutar, guarda automáticamente el archivo actual y cambia automáticamente al ZAFrida Project al que pertenece el script.
* Adecuado para PoC rápidos, validación de Demo, modo Gadget o inyección inmediata en procesos ya en ejecución.
* **Atajos**:
* Windows / Linux: `Ctrl + Alt + S`
* macOS: `⌘ + ⌥ + S`
* **Inserción de Snippets desde el menú contextual del editor**
* En el menú contextual del editor JS / TypeScript se ofrece **ZAFrida Frida Snippets**.
* Inserción con un clic de fragmentos de código Frida habituales, por ejemplo:
* Estructura envolvente `Java.perform`
* Plantilla de Hook de métodos Java
* Native Hook con `Interceptor.attach`
* El proceso de inserción sigue WriteCommandAction del IDE, permitiendo deshacer/rehacer de forma segura.
* **Sistema de plantillas dinámicas (innovación central)**
* Plantillas Hook integradas habituales de Android / iOS (como SSL Pinning Bypass, Method Hook, Native Hook).
* **Control por casilla de verificación**: al marcar se inserta el código, al desmarcar se comenta automáticamente el código, sin necesidad de borrar o modificar manualmente.
* Admite plantillas personalizadas y previsualización en tiempo real del código de la plantilla dentro del IDE.
* **Diseño separado de Run Script + Attach Script**
* Admite la coexistencia del **Run Script** principal y un **Attach Script** independiente.
* Adecuado para desacoplar el «Hook de fase de arranque» de la «lógica de inyección en tiempo de ejecución», facilitando la depuración compleja y el mantenimiento a largo plazo.
* **Configuración por proyectos (ZAFrida Project)**
* Introduce el concepto de ZAFrida Project, guardando dispositivo, objetivo, script, Attach Script, parámetros de conexión, etc. como un contexto de trabajo completo.
* Admite en el Project View:
* `New Frida Project` para crear un nuevo proyecto
* `Select Frida Project` para cambiar rápidamente el proyecto activo
* `Load Frida Project` para importar un directorio de proyecto existente
* Tras cambiar de proyecto, el estado de la UI y la configuración se restauran automáticamente.
* **Resolución inteligente del entorno Python / Frida**
* Por defecto resuelve el Python SDK del proyecto PyCharm actual; cada ZAFrida Project puede sobrescribir individualmente el intérprete o el directorio de entorno.
* Admite entornos locales system/pyenv, venv/virtualenv, Conda, uv, Poetry, Pipenv, Hatch.
* Varios ZAFrida Project pueden elegir la misma ruta para compartir entorno, sin duplicar venv; adecuado para mantener por separado entornos Frida 16/17.
* Si el entorno actual del IDE o el entorno explícito del proyecto carece de `frida-tools`, se produce un error directo, sin usar silenciosamente otra versión del PATH del sistema; `Test` puede mostrar la versión real de Frida.
* Los Python Interpreter remotos como SSH, Docker, Docker Compose, WSL aún no pueden usarse para el subproceso local de Frida.
* **Frida 17 / TypeScript**
* La selección de archivos, el clic derecho Run/Attach y los Snippets admiten `.js` / `.ts`; el REPL de Frida 17 compila automáticamente `-l agent.ts`.
* Las plantillas integradas se han migrado a la API moderna Module/NativePointer de Frida 17, manteniendo a la vez la compatibilidad con entornos habituales de Frida 16.
* El REPL de frida-tools incluye por compatibilidad los bridges estándar de Java/ObjC; al usar `import` de módulos npm/de terceros, gestione las dependencias mediante `frida-create -t agent` o un proyecto equivalente.
* **Interfaz de automatización local Skills**
* La HTTP API local de Skills (desactivada por defecto) admite descubrimiento de capacidades, entorno de proyecto/Python, dispositivos y procesos, Run/Attach, lista de logs históricos y lectura incremental de logs basada en cursor de bytes.
* El Skill incorpora flujos de recuperación acotados `wait-device` / `wait-session`, y distingue lecturas seguras de reintentar de operaciones con efectos secundarios no reproducibles automáticamente.
* Forma de activación: `Settings/Preferences -> ZAFrida -> Skills HTTP API`, marque `Enable Skills`.
* CLI y plantillas asociadas:
* `skills-template/zafrida-http-control/` (Skill principal y CLI)
* `skills-cli/zafrida_skill_cli.py` (lanzador compatible con la ruta antigua)
Casos de uso
-----------------------------------
ZAFrida UI es adecuado para todos los escenarios de ingeniería inversa con Frida, especialmente:
* Pruebas de penetración y análisis inverso de Apps Android / iOS.
* Procesos de depuración que requieren cambiar con frecuencia entre distintos scripts Hook.
* Ingenieros acostumbrados a usar el IDE (PyCharm/IDEA) para desarrollo mixto de Python, JavaScript y TypeScript.
Documentación técnica
-----------------------------------
- **Requisitos de entorno**:
- IntelliJ IDEA o PyCharm (se recomienda 2024.3+)
- Python3 y `frida-tools` instalados localmente (`pip install frida-tools`)
- Asegúrese de que `frida`, `frida-ps`, `frida-ls-devices` estén en el PATH del sistema o especifique la ruta en la configuración del complemento.
- **Comentarios de problemas**: [Github Issues](https://github.com/yilongmd/zafrida-ui/issues)
Iniciar el proyecto
-----------------------------------
1. Clonar el código fuente: `git clone https://github.com/yilongmd/zafrida-ui.git`
2. Abrir el proyecto con IntelliJ IDEA.
3. Ejecutar la tarea Gradle `runIde` para iniciar el entorno de depuración.
Efectos del sistema
-----------------------------------
##### Interfaz principal y panel de ejecución (Run Panel)
> Ofrece selección de dispositivo, selección de script, configuración del modo de ejecución y salida de consola.

##### Gestión de plantillas dinámicas (Template Panel)
> A la izquierda se elige la categoría, en el centro se marcan las plantillas, a la derecha se previsualiza el código en tiempo real. La casilla de verificación controla directamente si el contenido del script está activo o no.

##### Interfaz de configuración (Settings)
> Admite rutas personalizadas de herramientas Frida, direcciones de conexión remota y configuración de logs.

##### Asistente de creación de proyectos
> Crea rápidamente una estructura de proyecto Frida estandarizada.

Arquitectura técnica
-----------------------------------
#### Entorno de desarrollo
- Lenguaje: Java 21, Java, scripts de compilación con Gradle Kotlin DSL
- Framework: IntelliJ Platform SDK
- Herramienta de compilación: Gradle
- Dependencias: `frida` `frida-tools` (Python environment)
Agradecimientos
-----------------------------------
Agradecimiento especial a los siguientes expertos por su apoyo con plantillas de scripts Frida JS para este proyecto:
* **小佳**
* **Lane**
* **迷人**
Para más colaboradores e información de agradecimientos, consulte: [CONTRIBUTORS.md](https://github.com/yilongmd/zafrida-ui/blob/main/CONTRIBUTORS.md)