GhidraMCP
Permite que los LLMs realicen ingeniería inversa de aplicaciones de forma autónoma al exponer la funcionalidad principal de Ghidra.
Documentación
ghidraMCP
ghidraMCP es un servidor de Model Context Protocol que permite a los LLMs realizar ingeniería inversa de aplicaciones de forma autónoma. Expone numerosas herramientas de la funcionalidad principal de Ghidra a los clientes MCP.
https://github.com/user-attachments/assets/36080514-f227-44bd-af84-78e29ee1d7f9
Características
Servidor MCP + Plugin de Ghidra
- Descompilar y analizar binarios en Ghidra
- Renombrar automáticamente métodos y datos
- Listar métodos, clases, importaciones y exportaciones
Instalación
Requisitos previos
Ghidra
Primero, descarga la última versión desde este repositorio. Esta contiene el plugin de Ghidra y el cliente MCP de Python. Luego, puedes importar directamente el plugin en Ghidra.
- Ejecuta Ghidra
- Selecciona
File->Install Extensions - Haz clic en el botón
+ - Selecciona el
GhidraMCP-1-2.zip(o la versión que elijas) de la versión descargada - Reinicia Ghidra
- Asegúrate de que el GhidraMCPPlugin esté habilitado en
File->Configure->Developer - Opcional: Configura el puerto en Ghidra con
Edit->Tool Options->GhidraMCP HTTP Server
Guía de instalación en video:
https://github.com/user-attachments/assets/75f0c176-6da1-48dc-ad96-c182eb4648c3
Clientes MCP
En teoría, cualquier cliente MCP debería funcionar con ghidraMCP. A continuación se dan tres ejemplos.
Ejemplo 1: Claude Desktop
Para configurar Claude Desktop como cliente MCP de Ghidra, ve a Claude -> Settings -> Developer -> Edit Config -> claude_desktop_config.json y añade lo siguiente:
{
"mcpServers": {
"ghidra": {
"command": "python",
"args": [
"/ABSOLUTE_PATH_TO/bridge_mcp_ghidra.py",
"--ghidra-server",
"http://127.0.0.1:8080/"
]
}
}
}
Alternativamente, edita este archivo directamente:
/Users/YOUR_USER/Library/Application Support/Claude/claude_desktop_config.json
La IP y el puerto del servidor son configurables y deben establecerse para apuntar a la instancia de Ghidra objetivo. Si no se establecen, ambos tendrán como valor predeterminado localhost:8080.
Ejemplo 2: Cline
Para usar GhidraMCP con Cline, esto requiere ejecutar manualmente el servidor MCP también. Primero ejecuta el siguiente comando:
python bridge_mcp_ghidra.py --transport sse --mcp-host 127.0.0.1 --mcp-port 8081 --ghidra-server http://127.0.0.1:8080/
El único argumento requerido es el transporte. Si todos los demás argumentos no se especifican, tendrán como valor predeterminado lo anterior. Una vez que el servidor MCP esté en ejecución, abre Cline y selecciona MCP Servers en la parte superior.
Luego selecciona Remote Servers y añade lo siguiente, asegurándote de que la URL coincida con el host y el puerto del MCP:
- Nombre del servidor: GhidraMCP
- URL del servidor:
http://127.0.0.1:8081/sse
Ejemplo 3: 5ire
Otro cliente MCP que admite múltiples modelos en el backend es 5ire. Para configurar GhidraMCP, abre 5ire y ve a Tools -> New y establece las siguientes configuraciones:
- Clave de herramienta: ghidra
- Nombre: GhidraMCP
- Comando:
python /ABSOLUTE_PATH_TO/bridge_mcp_ghidra.py
Compilación desde el código fuente
- Copia los siguientes archivos desde tu directorio de Ghidra al directorio
lib/de este proyecto:
Ghidra/Features/Base/lib/Base.jarGhidra/Features/Decompiler/lib/Decompiler.jarGhidra/Framework/Docking/lib/Docking.jarGhidra/Framework/Generic/lib/Generic.jarGhidra/Framework/Project/lib/Project.jarGhidra/Framework/SoftwareModeling/lib/SoftwareModeling.jarGhidra/Framework/Utility/lib/Utility.jarGhidra/Framework/Gui/lib/Gui.jar
- Compila con Maven ejecutando:
mvn clean package assembly:single
El archivo zip generado incluye el plugin de Ghidra compilado y sus recursos. Estos archivos son necesarios para que Ghidra reconozca la nueva extensión.
- lib/GhidraMCP.jar
- extensions.properties
- Module.manifest