GhidraMCP

Permite que los LLMs realicen ingeniería inversa de aplicaciones de forma autónoma al exponer la funcionalidad principal de Ghidra.

Documentación

License GitHub release (latest by date) GitHub stars GitHub forks GitHub contributors Follow @lauriewired

ghidra_MCP_logo

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.

  1. Ejecuta Ghidra
  2. Selecciona File -> Install Extensions
  3. Haz clic en el botón +
  4. Selecciona el GhidraMCP-1-2.zip (o la versión que elijas) de la versión descargada
  5. Reinicia Ghidra
  6. Asegúrate de que el GhidraMCPPlugin esté habilitado en File -> Configure -> Developer
  7. 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.

Cline select

Luego selecciona Remote Servers y añade lo siguiente, asegurándote de que la URL coincida con el host y el puerto del MCP:

  1. Nombre del servidor: GhidraMCP
  2. 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:

  1. Clave de herramienta: ghidra
  2. Nombre: GhidraMCP
  3. Comando: python /ABSOLUTE_PATH_TO/bridge_mcp_ghidra.py

Compilación desde el código fuente

  1. Copia los siguientes archivos desde tu directorio de Ghidra al directorio lib/ de este proyecto:
  • Ghidra/Features/Base/lib/Base.jar
  • Ghidra/Features/Decompiler/lib/Decompiler.jar
  • Ghidra/Framework/Docking/lib/Docking.jar
  • Ghidra/Framework/Generic/lib/Generic.jar
  • Ghidra/Framework/Project/lib/Project.jar
  • Ghidra/Framework/SoftwareModeling/lib/SoftwareModeling.jar
  • Ghidra/Framework/Utility/lib/Utility.jar
  • Ghidra/Framework/Gui/lib/Gui.jar
  1. 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