GhidraMCP
Permite que LLMs realizem engenharia reversa de forma autônoma em aplicações, expondo funcionalidades principais do Ghidra.
Documentação
ghidraMCP
ghidraMCP é um servidor Model Context Protocol que permite que LLMs façam engenharia reversa de aplicações de forma autônoma. Ele expõe diversas ferramentas da funcionalidade principal do Ghidra para clientes MCP.
https://github.com/user-attachments/assets/36080514-f227-44bd-af84-78e29ee1d7f9
Recursos
Servidor MCP + Plugin Ghidra
- Descompilar e analisar binários no Ghidra
- Renomear automaticamente métodos e dados
- Listar métodos, classes, importações e exportações
Instalação
Pré-requisitos
Ghidra
Primeiro, baixe a versão mais recente release deste repositório. Ela contém o plugin Ghidra e o cliente MCP Python. Em seguida, você pode importar diretamente o plugin no Ghidra.
- Execute o Ghidra
- Selecione
File->Install Extensions - Clique no botão
+ - Selecione o
GhidraMCP-1-2.zip(ou a versão escolhida) do release baixado - Reinicie o Ghidra
- Certifique-se de que o GhidraMCPPlugin está habilitado em
File->Configure->Developer - Opcional: Configure a porta no Ghidra com
Edit->Tool Options->GhidraMCP HTTP Server
Guia de instalação em vídeo:
https://github.com/user-attachments/assets/75f0c176-6da1-48dc-ad96-c182eb4648c3
Clientes MCP
Teoricamente, qualquer cliente MCP deve funcionar com o ghidraMCP. Três exemplos são fornecidos abaixo.
Exemplo 1: Claude Desktop
Para configurar o Claude Desktop como um cliente MCP do Ghidra, vá para Claude -> Settings -> Developer -> Edit Config -> claude_desktop_config.json e adicione o seguinte:
{
"mcpServers": {
"ghidra": {
"command": "python",
"args": [
"/ABSOLUTE_PATH_TO/bridge_mcp_ghidra.py",
"--ghidra-server",
"http://127.0.0.1:8080/"
]
}
}
}
Alternativamente, edite este arquivo diretamente:
/Users/YOUR_USER/Library/Application Support/Claude/claude_desktop_config.json
O IP e a porta do servidor são configuráveis e devem ser definidos para apontar para a instância Ghidra alvo. Se não forem definidos, ambos terão como padrão localhost:8080.
Exemplo 2: Cline
Para usar o GhidraMCP com Cline, é necessário executar manualmente o servidor MCP também. Primeiro, execute o seguinte 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/
O único argumento obrigatório é o transporte. Se todos os outros argumentos não forem especificados, eles terão como padrão os valores acima. Quando o servidor MCP estiver em execução, abra o Cline e selecione MCP Servers no topo.
Em seguida, selecione Remote Servers e adicione o seguinte, garantindo que a URL corresponda ao host e à porta do MCP:
- Nome do servidor: GhidraMCP
- URL do servidor:
http://127.0.0.1:8081/sse
Exemplo 3: 5ire
Outro cliente MCP que suporta múltiplos modelos no backend é o 5ire. Para configurar o GhidraMCP, abra o 5ire e vá para Tools -> New e defina as seguintes configurações:
- Chave da ferramenta: ghidra
- Nome: GhidraMCP
- Comando:
python /ABSOLUTE_PATH_TO/bridge_mcp_ghidra.py
Compilando a partir do código-fonte
- Copie os seguintes arquivos do diretório do seu Ghidra para o diretório
lib/deste projeto:
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
- Compile com Maven executando:
mvn clean package assembly:single
O arquivo zip gerado inclui o plugin Ghidra compilado e seus recursos. Esses arquivos são necessários para que o Ghidra reconheça a nova extensão.
- lib/GhidraMCP.jar
- extensions.properties
- Module.manifest