IDA Pro
Interaja com o IDA Pro para tarefas de engenharia reversa e análise binária.
Documentação
Servidor MCP IDA Pro
Um servidor Model Context Protocol (MCP) que permite que assistentes de IA interajam com o IDA Pro para tarefas de engenharia reversa e análise de binários.
Visão Geral
Este projeto fornece uma ponte entre assistentes de IA e o IDA Pro, um desmontador e depurador popular usado para engenharia reversa de software. Ele consiste em três componentes principais:
- Plugin de Controle Remoto do IDA Pro (
ida_remote_server.py): Um plugin do IDA Pro que cria um servidor HTTP para controlar remotamente as funções do IDA Pro. - Cliente Remoto do IDA (
idaremoteclient.ts): Um cliente TypeScript para interagir com o Servidor de Controle Remoto do IDA Pro. - Servidor MCP (
index.ts): Um servidor Model Context Protocol que expõe a funcionalidade do IDA Pro a assistentes de IA.
Recursos
- Executar scripts Python no IDA Pro a partir de assistentes de IA
- Recuperar informações sobre binários:
- Strings
- Importações
- Exportações
- Funções
- Capacidades avançadas de análise de binários:
- Pesquisar valores imediatos em instruções
- Pesquisar strings de texto no binário
- Pesquisar sequências de bytes específicas
- Obter desmontagem para faixas de endereços
- Automatizar operações do IDA Pro por meio de uma interface padronizada
- Comunicação segura entre componentes
Pré-requisitos
- IDA Pro 8.3 ou posterior
- Node.js 18 ou posterior
- TypeScript
Exemplo de uso do 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"}
Exemplo de uso do Servidor MCP

Instalação
1. Instalar o Plugin de Controle Remoto do IDA Pro
-
Copie
ida_remote_server.pypara o diretório de plugins do seu IDA Pro:- Windows:
%PROGRAMFILES%\IDA Pro\plugins - macOS:
/Applications/IDA Pro.app/Contents/MacOS/plugins - Linux:
/opt/idapro/plugins
- Windows:
-
Inicie o IDA Pro e abra um arquivo binário.
-
O plugin iniciará automaticamente um servidor HTTP em
127.0.0.1:9045.
2. Instalar o Servidor MCP
-
Clone este repositório:
git clone <repository-url> cd ida-server -
Instale as dependências:
npm install -
Compile o projeto:
npm run build -
Configure o servidor MCP no arquivo de configurações MCP do seu assistente de IA:
{ "mcpServers": { "ida-pro": { "command": "node", "args": ["path/to/ida-server/dist/index.js"], "env": {} } } }
Uso
Depois de instalado e configurado, o servidor MCP fornece a seguinte ferramenta aos assistentes de IA:
run_ida_command
Executa um script Python do IDA Pro.
Parâmetros:
scriptPath(obrigatório): Caminho absoluto para o arquivo de script a ser executadooutputPath(opcional): Caminho absoluto para salvar a saída do script
Exemplo:
# 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
O assistente de IA pode então usar este script com:
<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>
search_immediate_value
Pesquisa valores imediatos nas instruções do binário.
Parâmetros:
value(obrigatório): Valor a ser pesquisado (número ou string)radix(opcional): Base para conversão de números (padrão: 16)startAddress(opcional): Endereço inicial para a pesquisaendAddress(opcional): Endereço final para a pesquisa
Exemplo:
<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>
search_text
Pesquisa strings de texto no binário.
Parâmetros:
text(obrigatório): Texto a ser pesquisadocaseSensitive(opcional): Se a pesquisa diferencia maiúsculas de minúsculas (padrão: falso)startAddress(opcional): Endereço inicial para a pesquisaendAddress(opcional): Endereço final para a pesquisa
Exemplo:
<use_mcp_tool>
<server_name>ida-pro</server_name>
<tool_name>search_text</tool_name>
<arguments>
{
"text": "password",
"caseSensitive": false
}
</arguments>
</use_mcp_tool>
search_byte_sequence
Pesquisa uma sequência de bytes específica no binário.
Parâmetros:
bytes(obrigatório): Sequência de bytes a ser pesquisada (por exemplo, "90 90 90" para três NOPs)startAddress(opcional): Endereço inicial para a pesquisaendAddress(opcional): Endereço final para a pesquisa
Exemplo:
<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>
get_disassembly
Obtém a desmontagem para uma faixa de endereços.
Parâmetros:
startAddress(obrigatório): Endereço inicial para a desmontagemendAddress(opcional): Endereço final para a desmontagemcount(opcional): Número de instruções a desmontar
Exemplo:
<use_mcp_tool>
<server_name>ida-pro</server_name>
<tool_name>get_disassembly</tool_name>
<arguments>
{
"startAddress": "0x401000",
"count": 10
}
</arguments>
</use_mcp_tool>
get_functions
Obtém a lista de funções do binário.
Parâmetros:
- Nenhum obrigatório
Exemplo:
<use_mcp_tool>
<server_name>ida-pro</server_name>
<tool_name>get_functions</tool_name>
<arguments>
{}
</arguments>
</use_mcp_tool>
get_exports
Obtém a lista de exportações do binário.
Parâmetros:
- Nenhum obrigatório
Exemplo:
<use_mcp_tool>
<server_name>ida-pro</server_name>
<tool_name>get_exports</tool_name>
<arguments>
{}
</arguments>
</use_mcp_tool>
get_strings
Obtém a lista de strings do binário.
Parâmetros:
- Nenhum obrigatório
Exemplo:
<use_mcp_tool>
<server_name>ida-pro</server_name>
<tool_name>get_strings</tool_name>
<arguments>
{}
</arguments>
</use_mcp_tool>
API de Controle Remoto do IDA Pro
O Plugin de Controle Remoto do IDA Pro expõe os seguintes endpoints HTTP:
GET /api/info: Obter informações do pluginGET /api/strings: Obter strings do binárioGET /api/exports: Obter exportações do binárioGET /api/imports: Obter importações do binárioGET /api/functions: Obter lista de funçõesGET /api/search/immediate: Pesquisar valores imediatos em instruçõesGET /api/search/text: Pesquisar texto no binárioGET /api/search/bytes: Pesquisar sequências de bytes no binárioGET /api/disassembly: Obter desmontagem para uma faixa de endereçosPOST /api/execute: Executar script Python (JSON/Formulário)POST /api/executebypath: Executar script Python a partir de um caminho de arquivoPOST /api/executebody: Executar script Python a partir do corpo bruto
Considerações de Segurança
Por padrão, o Plugin de Controle Remoto do IDA Pro escuta apenas em 127.0.0.1 (localhost) por motivos de segurança. Isso impede o acesso remoto à sua instância do IDA Pro.
Se você precisar permitir acesso remoto, pode modificar a variável DEFAULT_HOST em ida_remote_server.py, mas esteja ciente das implicações de segurança.
Desenvolvimento
Compilando a partir do Código Fonte
npm run build
Executando Testes
npm test
Licença
Este projeto é licenciado sob a Licença MIT. Consulte o arquivo LICENSE para obter detalhes.
Autor
Florian Drechsler (@fdrechsler) fd@fdrechsler.com