Un plugin avanzado impulsado por LLM para asistencia interactiva en ingeniería inversa dentro de Ghidra.
Descripción
GhidrAssist integra Modelos de Lenguaje de Gran Tamaño (LLMs) en Ghidra para proporcionar asistencia inteligente en la exploración de binarios e ingeniería inversa. Es compatible con cualquier API compatible con OpenAI v1, incluyendo modelos locales (Ollama, LM-Studio, Open-WebUI) y proveedores en la nube (OpenAI, Anthropic, Azure).
Características principales
Funcionalidad principal:
Explicación de código - Explica funciones e instrucciones tanto en desensamblado como en pseudo-C descompilado
Panel de análisis de seguridad que muestra nivel de riesgo, perfil de actividad y uso de API
Resúmenes editables con protección contra sobrescritura automática por parte del usuario
Chat interactivo - Consultas conversacionales de múltiples turnos con historial de chat persistente
Consultas personalizadas - Consultas directas al LLM con contexto opcional de la función/ubicación actual
Sistema de conocimiento Graph-RAG:
Grafo de conocimiento semántico - Representación jerárquica del análisis de binarios
Asegúrate de que las rutas de las bases de datos RLHF y RAG sean apropiadas para tu entorno.
Apunta el host de la API a tu proveedor de API preferido y establece la clave de API.
(Opcional) En la pestaña de Opciones de análisis, establece el nivel de Esfuerzo de razonamiento (Ninguno/Bajo/Medio/Alto) para modelos que admitan pensamiento extendido.
Abre GhidrAssist con la opción GhidrAssist en el menú Ventanas y comienza a explorar.
Configuración del LLM
GhidrAssist funciona con cualquier API compatible con OpenAI v1. Los detalles de configuración son específicos de cada proveedor; aquí hay algunos recursos útiles:
Proveedores LLM locales:
LM Studio - Alojamiento local de modelos fácil con GUI
Ollama - Gestión local de modelos desde línea de comandos
Modelos con soporte de pensamiento/razonamiento extendido:
OpenAI: o1-preview, o1-mini, o3-mini, o4-mini, gpt-5 (usar el parámetro reasoning_effort)
Anthropic: Claude Sonnet 4.5, Claude Opus 4.5, Claude Haiku 4.5, Claude Opus 4.1/4, Claude Sonnet 4 (usar el parámetro thinking.budget_tokens)
Local: openai/gpt-oss-20b mediante Ollama/LMStudio (admite niveles de esfuerzo)
Directrices sobre el esfuerzo de razonamiento:
Bajo: Análisis rápido, tokens de pensamiento mínimos (~5-10s, menor costo)
Medio: Profundidad de razonamiento equilibrada (~15-30s, costo moderado)
Alto: Análisis de seguridad profundo (~30-60s, 2x costo, recomendado para búsqueda de vulnerabilidades)
Nota: El modo agéntico requiere modelos con sólidas capacidades de llamada a funciones y razonamiento multipaso. Los modelos más pequeños pueden tener dificultades con investigaciones complejas. El pensamiento extendido es opcional, pero puede mejorar significativamente la calidad del análisis en tareas complejas de ingeniería inversa.
Uso de GhidrAssistMCP para análisis basado en herramientas
GhidrAssistMCP proporciona herramientas MCP que permiten al LLM interactuar directamente con las capacidades de análisis de Ghidra.
Configuración
Inicia el servidor MCP
Configura GhidrAssist:
Abre Herramientas → Configuración de GhidrAssist → pestaña Servidores MCP
Añade el servidor: http://127.0.0.1:8081 como GhidrAssistMCP con tipo de transporte SSE
Habilita MCP en las consultas:
En la pestaña de Consulta personalizada, marca "Usar MCP"
Opcionalmente, activa "Agéntico" para el modo de investigación autónoma
Modos de uso
Consultas MCP regulares:
Activa la casilla "Usar MCP"
Haz preguntas como "¿Qué hace la función actual?"
El LLM puede llamar a herramientas para obtener descompilación, referencias cruzadas, etc.
Modo agéntico (recomendado):
Activa tanto "Usar MCP" como "Agéntico"
Haz preguntas complejas como "Encuentra vulnerabilidades en esta función" o "Analiza el grafo de llamadas"
El agente ReAct:
Propondrá pasos de investigación como lista de tareas
Ejecutará sistemáticamente herramientas para recopilar información
Hará seguimiento del progreso y acumulará hallazgos
Sintetizará una respuesta integral con evidencia
Ejemplos de consultas:
"¿Qué vulnerabilidades de seguridad existen en esta función?"
"Traza el flujo de datos desde la entrada del usuario hasta esta llamada"
"Encuentra todas las funciones que modifican la variable global X"
"Analiza el manejo de errores en la función actual"
Uso del grafo semántico (Graph-RAG)
La pestaña Grafo Semántico proporciona una interfaz de grafo de conocimiento para explorar los resultados del análisis de binarios sin necesidad de llamadas al LLM para cada consulta.
Primeros pasos
Indexa el binario:
Abre la pestaña Grafo Semántico
Haz clic en "Reindexar binario" para extraer las relaciones estructurales
Haz clic en "Análisis semántico" para generar resúmenes LLM (requiere API)
El progreso se muestra en la barra de estado
Explora el grafo:
Vista de lista: Examina todas las funciones indexadas con resúmenes y marcadores de seguridad
Vista de grafo: Visualiza las relaciones de llamadas con profundidad N-hop configurable
Vista de búsqueda: Búsqueda de texto completo en resúmenes y anotaciones de seguridad
Análisis de seguridad:
Haz clic en "Análisis de seguridad" para escanear características relevantes para la seguridad
Los resultados incluyen: APIs de red, E/S de archivos, uso de criptografía, patrones de cadenas
Se asignan niveles de riesgo (BAJO/MEDIO/ALTO) según las características detectadas
Integración con la pestaña Explicar
Al ver una función en la pestaña Explicar:
Si la función está indexada, el resumen precalculado se muestra al instante
El panel de seguridad muestra: nivel de riesgo, perfil de actividad, APIs utilizadas
Haz clic en "Editar" para modificar los resúmenes (protegidos contra sobrescritura automática)
Usa "Actualizar" para regenerar el resumen con el LLM
Beneficios
Consultas rápidas: Los resúmenes precalculados eliminan la latencia del LLM en consultas repetidas
Análisis sin conexión: Explora datos indexados sin conectividad a la API
Enfoque en seguridad: Detección automática de patrones de código relevantes para la seguridad
Descubrimiento de módulos: La detección de comunidades agrupa automáticamente funciones relacionadas