IDA Pro MCP Server

by fdrechsler

Integrations

  • Used to run the MCP server that bridges AI assistants with IDA Pro, enabling remote binary analysis capabilities through a structured API.

  • Enables execution of Python scripts within IDA Pro for reverse engineering tasks, allowing AI assistants to interact with binary analysis functions through a standardized interface.

  • Provides the client interface and MCP server implementation for enabling AI assistants to interact with IDA Pro's binary analysis capabilities.

Servidor IDA Pro MCP

Un servidor de Protocolo de Contexto de Modelo (MCP) que permite a los asistentes de IA interactuar con IDA Pro para tareas de ingeniería inversa y análisis binario.

Descripción general

Este proyecto conecta los asistentes de IA con IDA Pro, un popular desensamblador y depurador utilizado para la ingeniería inversa de software. Consta de tres componentes principales:

  1. Complemento de control remoto de IDA Pro ( ida_remote_server.py ): un complemento de IDA Pro que crea un servidor HTTP para controlar de forma remota las funciones de IDA Pro.
  2. Cliente remoto IDA ( idaremoteclient.ts ): un cliente TypeScript para interactuar con el servidor de control remoto IDA Pro.
  3. Servidor MCP ( index.ts ): un servidor de protocolo de contexto de modelo que expone la funcionalidad de IDA Pro a los asistentes de IA.

Características

  • Ejecute scripts de Python en IDA Pro desde asistentes de IA
  • Recuperar información sobre los binarios:
    • Instrumentos de cuerda
    • Importaciones
    • Exportaciones
    • Funciones
  • Capacidades avanzadas de análisis binario:
    • Búsqueda de valores inmediatos en las instrucciones
    • Buscar cadenas de texto en el binario
    • Buscar secuencias de bytes específicas
    • Obtener desmontaje para rangos de direcciones
  • Automatice las operaciones de IDA Pro a través de una interfaz estandarizada
  • Comunicación segura entre componentes

Prerrequisitos

  • IDA Pro 8.3 o posterior
  • Node.js 18 o posterior
  • Mecanografiado

Ejemplo de uso ida_remote_server.py

curl -X POST -H "Content-Type: application/json" -d '{"script":"print(\"Script initialization...\")"}' http://127.0.0.1:9045/api/execute {"success": true, "output": "Script initialization...\n"}

Ejemplo de uso del servidor MCP

Instalación

1. Instale el complemento de control remoto IDA Pro

  1. Copie ida_remote_server.py a su directorio de complementos de IDA Pro:
    • Windows: %PROGRAMFILES%\IDA Pro\plugins
    • macOS: /Applications/IDA Pro.app/Contents/MacOS/plugins
    • Linux: /opt/idapro/plugins
  2. Inicie IDA Pro y abra un archivo binario.
  3. El complemento iniciará automáticamente un servidor HTTP en 127.0.0.1:9045 .

2. Instalar el servidor MCP

  1. Clonar este repositorio:
    git clone <repository-url> cd ida-server
  2. Instalar dependencias:
    npm install
  3. Construir el proyecto:
    npm run build
  4. Configure el servidor MCP en el archivo de configuración MCP de su asistente de IA:
    { "mcpServers": { "ida-pro": { "command": "node", "args": ["path/to/ida-server/dist/index.js"], "env": {} } } }

Uso

Una vez instalado y configurado, el servidor MCP proporciona la siguiente herramienta a los asistentes de IA:

comando_ejecutar_ida

Ejecuta un script de Python de IDA Pro.

Parámetros:

  • scriptPath (obligatorio): ruta absoluta al archivo de script a ejecutar
  • outputPath (opcional): ruta absoluta donde guardar la salida del script

Ejemplo:

# Example IDA Pro script (save as /path/to/script.py) import idautils # Count functions function_count = len(list(idautils.Functions())) print(f"Binary has {function_count} functions") # Get the first 5 function names functions = list(idautils.Functions())[:5] for func_ea in functions: print(f"Function: {ida_name.get_ea_name(func_ea)} at {hex(func_ea)}") # Return data return_value = function_count

El asistente de IA puede entonces usar este script con:

<use_mcp_tool> <server_name>ida-pro</server_name> <tool_name>run_ida_command</tool_name> <arguments> { "scriptPath": "/path/to/script.py" } </arguments> </use_mcp_tool>

valor_inmediato_de_búsqueda

Busca valores inmediatos en las instrucciones del binario.

Parámetros:

  • value (obligatorio): Valor a buscar (número o cadena)
  • radix (opcional): Base para conversión de números (predeterminado: 16)
  • startAddress (opcional): Dirección de inicio para la búsqueda
  • endAddress (opcional): Dirección final para la búsqueda

Ejemplo:

<use_mcp_tool> <server_name>ida-pro</server_name> <tool_name>search_immediate_value</tool_name> <arguments> { "value": "42", "radix": 10 } </arguments> </use_mcp_tool>

texto de búsqueda

Busca cadenas de texto en el binario.

Parámetros:

  • text (obligatorio): Texto a buscar
  • caseSensitive (opcional): si la búsqueda distingue entre mayúsculas y minúsculas (valor predeterminado: falso)
  • startAddress (opcional): Dirección de inicio para la búsqueda
  • endAddress (opcional): Dirección final para la búsqueda

Ejemplo:

<use_mcp_tool> <server_name>ida-pro</server_name> <tool_name>search_text</tool_name> <arguments> { "text": "password", "caseSensitive": false } </arguments> </use_mcp_tool>

secuencia_de_bytes_de_búsqueda

Busca una secuencia de bytes específica en el binario.

Parámetros:

  • bytes (obligatorio): secuencia de bytes a buscar (por ejemplo, "90 90 90" para tres NOP)
  • startAddress (opcional): Dirección de inicio para la búsqueda
  • endAddress (opcional): Dirección final para la búsqueda

Ejemplo:

<use_mcp_tool> <server_name>ida-pro</server_name> <tool_name>search_byte_sequence</tool_name> <arguments> { "bytes": "90 90 90" } </arguments> </use_mcp_tool>

obtener_desmontaje

Obtiene el desmontaje para un rango de direcciones.

Parámetros:

  • startAddress (obligatorio): Dirección de inicio para el desmontaje
  • endAddress (opcional): Dirección final para el desmontaje
  • count (opcional): Número de instrucciones para desmontar

Ejemplo:

<use_mcp_tool> <server_name>ida-pro</server_name> <tool_name>get_disassembly</tool_name> <arguments> { "startAddress": "0x401000", "count": 10 } </arguments> </use_mcp_tool>

obtener_funciones

Obtiene la lista de funciones del binario.

Parámetros:

  • No se requiere ninguno

Ejemplo:

<use_mcp_tool> <server_name>ida-pro</server_name> <tool_name>get_functions</tool_name> <arguments> {} </arguments> </use_mcp_tool>

obtener_exportaciones

Obtiene la lista de exportaciones del binario.

Parámetros:

  • No se requiere ninguno

Ejemplo:

<use_mcp_tool> <server_name>ida-pro</server_name> <tool_name>get_exports</tool_name> <arguments> {} </arguments> </use_mcp_tool>

obtener_cadenas

Obtiene la lista de cadenas del binario.

Parámetros:

  • No se requiere ninguno

Ejemplo:

<use_mcp_tool> <server_name>ida-pro</server_name> <tool_name>get_strings</tool_name> <arguments> {} </arguments> </use_mcp_tool>

API de control remoto de IDA Pro

El complemento de control remoto IDA Pro expone los siguientes puntos finales HTTP:

  • GET /api/info : Obtener información del complemento
  • GET /api/strings : Obtener cadenas del binario
  • GET /api/exports : Obtener exportaciones del binario
  • GET /api/imports : Obtener importaciones del binario
  • GET /api/functions : Obtener la lista de funciones
  • GET /api/search/immediate : busca valores inmediatos en las instrucciones
  • GET /api/search/text : Busca texto en el binario
  • GET /api/search/bytes : busca secuencias de bytes en el binario
  • GET /api/disassembly : Obtener el desensamblado para un rango de direcciones
  • POST /api/execute : Ejecutar script de Python (JSON/Formulario)
  • POST /api/executebypath : Ejecutar script de Python desde la ruta del archivo
  • POST /api/executebody : Ejecutar script de Python desde el cuerpo sin formato

Consideraciones de seguridad

De forma predeterminada, el complemento de control remoto de IDA Pro solo escucha en 127.0.0.1 (localhost) por razones de seguridad. Esto impide el acceso remoto a su instancia de IDA Pro.

Si necesita permitir el acceso remoto, puede modificar la variable DEFAULT_HOST en ida_remote_server.py , pero tenga en cuenta las implicaciones de seguridad.

Desarrollo

Construyendo desde la fuente

npm run build

Ejecución de pruebas

npm test

Licencia

Este proyecto está licenciado bajo la Licencia MIT. Consulte el archivo de LICENCIA para más detalles.

Autor

Florian Drechsler (@fdrechsler) fd@fdrechsler.com

Related MCP Servers

  • A
    security
    F
    license
    A
    quality
    A Model Context Protocol server that allows secure execution of pre-approved commands, enabling AI assistants to safely interact with the user's system.
    Last updated -
    1
    3
    18
    JavaScript
  • -
    security
    F
    license
    -
    quality
    A Model Context Protocol server that enables AI assistants like Claude to perform Python development tasks through file operations, code analysis, project management, and safe code execution.
    Last updated -
    1
    Python
    • Linux
    • Apple
  • A
    security
    A
    license
    A
    quality
    A Model Context Protocol server for IDA interaction and automation. This server provides tools to read IDA database via Large Language Models.
    Last updated -
    19
    415
    Python
    MIT License
    • Apple
  • -
    security
    A
    license
    -
    quality
    A Model Context Protocol server that enables AI assistants to search and retrieve information about security exploits and vulnerabilities from the Exploit Database, enhancing cybersecurity research capabilities.
    Last updated -
    4
    TypeScript
    MIT License
    • Linux
    • Apple

View all related MCP servers

ID: 6uggdwvpb2