Plugin de Ingeniería Inversa Impulsado por IA para IDA Pro
Plugin de Ingeniería Inversa Potenciado por IA para IDA Pro
Autor: Jason Tang
IDAssist es un plugin para IDA Pro que integra análisis potenciado por LLM directamente en la interfaz de IDA, proporcionando ingeniería inversa de binarios asistida por IA mediante proveedores LLM configurables, grafos de conocimiento semántico, búsqueda de documentos RAG, y soporta una amplia diversidad de proveedores LLM.
Construido con Python y PySide6, IDAssist se ejecuta como un panel acoplable dentro de IDA Pro 9.0+ y se comunica con proveedores LLM (OpenAI, Anthropic, Ollama, LiteLLM, y más) para analizar funciones, sugerir renombres, responder preguntas sobre el código y construir un grafo de conocimiento buscable de un binario completo.

Explicación de Funciones — Genera explicaciones detalladas en lenguaje natural de funciones descompiladas con análisis de seguridad automático que incluye nivel de riesgo, perfil de actividad, banderas de seguridad y detección de APIs.
Chat de Consultas Interactivo — Haz preguntas sobre el binario con historial de chat persistente. Usa macros de contexto (#func, #addr, #line, #range) para inyectar código de funciones, direcciones o rangos de desensamblado en las consultas.
Acciones Automatizadas — Sugerencias de renombrado potenciadas por IA para funciones, variables y tipos. Revisa los cambios propuestos en una tabla con puntuaciones de confianza, luego aplica las acciones seleccionadas a la IDB.
Grafo de Conocimiento Semántico — Construye y explora un grafo de conocimiento de las funciones del binario, relaciones de llamadas, flujos de datos y características de seguridad. Incluye representación visual del grafo, búsqueda semántica y detección de comunidades.
Búsqueda de Documentos RAG — Sube documentos de referencia (.txt, .md, .rst, .pdf) y úsalos como contexto durante las consultas LLM. Soporta búsqueda híbrida texto+vector mediante indexación Whoosh.
Integración con SymGraph — Envía y recibe nombres de funciones, nombres de variables, tipos y datos del grafo hacia la plataforma colaborativa SymGraph. Incluye un asistente de varios pasos con resolución de conflictos para las descargas.
Gestión de Configuración — Configura múltiples proveedores LLM y MCP, gestiona credenciales de la API de SymGraph, personaliza el prompt del sistema y establece rutas de bases de datos.
La pestaña Query admite un modo de agente autónomo ReAct (Razonamiento + Actuación). Cuando está habilitado, el LLM planifica una estrategia de investigación, ejecuta herramientas para recopilar información, reflexiona sobre los hallazgos y sintetiza una respuesta completa, todo automáticamente a lo largo de múltiples rondas de razonamiento.
Configura niveles de esfuerzo de razonamiento para controlar cuánto "piensa" el LLM antes de responder:
| Nivel | Presupuesto de Pensamiento | Mejor para |
|---|---|---|
| Ninguno | Deshabilitado | Consultas rápidas y simples |
| Bajo | ~2K tokens | Análisis directo |
| Medio | ~10K tokens | Complejidad moderada |
| Alto | ~25K tokens | Análisis profundo, código complejo |
IDAssist puede conectarse a servidores MCP externos para interacciones LLM aumentadas con herramientas, donde el modelo puede inspeccionar funciones mediante programación, leer desensamblado, consultar referencias cruzadas y modificar la IDB durante el razonamiento. Se admiten tanto servidores MCP basados en URL (SSE o Streamable HTTP) como servidores MCP basados en stdio iniciados desde un comando CLI local. IDAssist también proporciona herramientas internas integradas para llamadas a funciones sin necesidad de un servidor MCP externo.
Los proveedores LLM con soporte para llamadas a herramientas pueden invocar funciones de análisis de IDA durante la conversación, permitiendo una investigación iterativa sin intervención manual.
Proporciona retroalimentación de pulgar arriba/abajo sobre explicaciones y respuestas a consultas. La retroalimentación se almacena localmente y puede usarse para mejorar la ingeniería de prompts y la selección de modelos.
IDAssist sigue un patrón MVC (Modelo-Vista-Controlador):
src/views/) — Widgets de pestañas PySide6 que emiten señales al interactuar con el usuariosrc/controllers/) — Conectan las señales de las vistas con las llamadas a servicios, gestionan el estadosrc/services/) — Lógica de negocio, proveedores LLM, acceso a base de datos, análisis de grafossrc/services/internal_tools.py) — Definiciones de herramientas específicas de IDA para llamadas a funciones LLMsrc/services/graphrag/graphrag_tools.py) — Herramientas de lectura/escritura de grafos semánticos para interacción LLMPrincipios clave de diseño:
execute_on_main_thread()Instala el plugin (recomendado — Administrador de Plugins de IDA):
hcli plugin install idassist
Esto instala automáticamente el plugin y sus dependencias de Python en el entorno de IDA.
O instala manualmente (desde el archivo comprimido de la versión):
Descarga el zip de la última versión desde GitHub Releases y extráelo en tu directorio de plugins de IDA:
Linux / macOS:
unzip IDAssist-*.zip -d ~/.idapro/plugins/
Windows:
Extrae el zip en %APPDATA%\Hex-Rays\IDA Pro\plugins\.
Luego instala las dependencias usando el Python incluido con IDA (no el Python de tu sistema):
Linux / macOS:
<IDA_INSTALL_DIR>/python3/bin/pip3 install -r ~/.idapro/plugins/IDAssist/requirements.txt
Windows:
"<IDA_INSTALL_DIR>\python3\python.exe" -m pip install -r "%APPDATA%\Hex-Rays\IDA Pro\plugins\IDAssist\requirements.txt"
Reemplaza
<IDA_INSTALL_DIR>con la ruta de instalación de IDA Pro (por ejemplo,/opt/idapro-9.0oC:\Program Files\IDA Pro 9.0).Consejo: También puedes establecer la variable de entorno
IDAUSRen un directorio personalizado que contenga un subdirectorioplugins/.
Abre IDAssist: Inicia IDA Pro, abre un binario y presiona Ctrl+Shift+A (o Editar > Plugins > IDAssist).
Configura un proveedor: Ve a la pestaña de Configuración, haz clic en Agregar bajo Proveedores LLM y configura tu proveedor preferido.
Analiza una función: Navega a cualquier función, haz clic en la pestaña Explain y presiona Explain Function.
Para instrucciones detalladas de configuración, consulta Primeros Pasos.
IDAssist soporta los siguientes tipos de proveedores:
| Tipo | Método de Autenticación | Notas |
|---|---|---|
anthropic_platform | API Key | API directa de Anthropic |
anthropic_oauth | OAuth (navegador) | Autenticación basada en navegador |
anthropic_claude_cli | CLI local | Usa el binario CLI claude |
bedrock | Credenciales AWS | API directa AWS Bedrock Converse |
openai_platform | API Key | API directa de OpenAI |
openai_oauth | OAuth (navegador) | Autenticación basada en navegador |
ollama | Ninguno (local) | Modelos autoalojados |
litellm | URL Proxy | Proxy multiproveedor |
| Proveedor | Modelo | Fortalezas |
|---|---|---|
| Anthropic | claude-sonnet-4-6 | Análisis de código sólido, pensamiento extendido |
| OpenAI | gpt-5.3-codex | Rápido, buen análisis general |
| Ollama | qwen2.5-coder:32b | Local, no necesita clave API |
La pestaña Semantic Graph proporciona un grafo de conocimiento del binario:
Explora el grafo a través de la List View (llamadores, llamados, aristas, banderas), Visual Graph (diagrama de nodos interactivo con expansión de N saltos) o Search (7 tipos de consulta que incluyen búsqueda semántica, funciones similares y contexto de llamadas).
Haz clic derecho en cualquier vista de Desensamblado o Pseudocódigo para acceder a:
| Acción | Atajo | Efecto |
|---|---|---|
| Explain Function | Ctrl+Shift+E | Abre la pestaña Explain y genera una explicación |
| Ask About Selection | Ctrl+Shift+Q | Abre la pestaña Query con contexto #func |
| Rename Suggestions | — | Abre la pestaña Actions y genera sugerencias |
requirements.txtConsulta el archivo LICENSE para más detalles.