Ghidra'yı AI asistanlarıyla entegre etmek için MCP sunucusu. Bu plugin, Model Context Protocol aracılığıyla binary analizi, function incelemesi, decompilation, memory keşfi ve import/export analizi için araçlar sunarak ikili dosya analizini etkinleştirir.
Claude Desktop config.json'a ekle
{
"mcpServers": {
"13bm-ghidramcp": {
"command": "node",
"args": [
"~/.mcp/GhidraMCP/index.js"
]
}
}
} Kaynak kodu al ve yerel olarak çalıştır
git clone https://github.com/13bm/GhidraMCP.git ~/.mcp/GhidraMCP
cd ~/.mcp/GhidraMCP Ghidra'yı Model Context Protocol (MCP) aracılığıyla 70 adet ters-mühendislik aracını AI asistanlarına sunan bir Ghidra uzantısı. Bir binary dosyasını Ghidra'da açın, eklentiyi etkinleştirin ve Claude'u (veya herhangi bir MCP istemcisini) fonksiyonları decompile etme, sembolleri yeniden adlandırma, kodu açıklama ekleme, güvenlik açıklarını arama ve daha fazlasını yapmasına izin verin.
AI Client (Claude Desktop / CLI)
| stdio + MCP JSON-RPC
v
Go MCP Bridge (mcp_bridge)
| TCP, length-prefixed JSON-RPC
v
Ghidra Plugin (MCPServerPlugin)
|
v
Ghidra Program API
Ghidra eklentisi (Java), Ghidra içinde bir TCP sunucusu başlatır ve Go bridge binary dosyasını otomatik olarak başlatır. Bridge, AI istemcisine MCP üzerinden JSON-RPC iletişimi kurar ve çağrıları 4 baytlık uzunluk ön ekli JSON-RPC çerçevelemesiyle yerel bir TCP soketine iletir. İsteğe bağlı API anahtarı kimlik doğrulaması TCP kanalını korur.
GhidraMCP.properties aracılığıylatarget_port kullanarak tool çağrılarını yönlendirmek için aynı anda birden fazla Ghidra penceresinde çalışınoffset/limit desteğilocalhost:8765) ve bridge'i başlatırClaude Desktop'ı yapılandırmak için MCP > Settings açın ve Write to Claude Config'e tıklayın. Diğer MCP istemcileri için Copy to Clipboard'a tıklayın ve bunu istemci yapılandırmanıza ekleyin:
{
"mcpServers": {
"ghidra": {
"command": "/path/to/mcp_bridge",
"args": ["--host", "localhost", "--port", "8765"]
}
}
}
Bir API anahtarı ayarladıysanız, env bloğuna ekleyin (eklenti bunu otomatik olarak yapar):
{
"mcpServers": {
"ghidra": {
"command": "/path/to/mcp_bridge",
"args": ["--host", "localhost", "--port", "8765"],
"env": {
"GHIDRA_API_KEY": "your-key-here"
}
}
}
}
Ayrıca Ghidra'dan snippet'i alabilirsiniz: MCP > Copy MCP Config (panoya kopyalar).
Parametreler, türler ve örneklerle tam başvuru: TOOLS.md
Aşağıdaki tablolar hızlı bir genel bakış sunar. Detaylı parametre dokümantasyonu için TOOLS.md dosyasına bakın.
| Tool | Açıklama |
|---|---|
list_functions |
Giriş noktaları, boyutları, dönüş türleriyle tüm fonksiyonları listeleyin |
list_classes |
Tüm sınıfları / namespace'leri listeleyin |
list_imports |
İçeri aktarılan sembolleri ve harici bağımlılıkları listeleyin |
list_exports |
Dışarı aktarılan sembolleri listeleyin |
list_namespaces |
Tüm namespace'leri listeleyin |
list_data_items |
Tanımlı verileri listeleyin (globals, constants, arrays, structs) |
list_strings |
İsteğe bağlı substring filtresine sahip string'leri listeleyin |
search_functions_by_name |
Fonksiyonları ad substring'ine göre arayın |
get_function_by_address |
Bir adresteki fonksiyon için detaylı info |
get_current_address |
Ghidra'da şu anda seçili adres |
get_current_function |
Cursor konumundaki fonksiyon |
decompile_function |
Ada göre C pseudocode'e decompile edin |
decompile_function_by_address |
Adrese göre C pseudocode'e decompile edin |
disassemble_function |
Bir fonksiyon için ham assembly listesi |
get_xrefs_to |
Bir adrese GELEN cross-references |
get_xrefs_from |
Bir adresten GIDEN cross-references |
get_function_xrefs |
Bir fonksiyon için tüm xrefs (callers + callees) |
get_program_info |
Program metadatası (arch, compiler, format, vb.) |
get_memory_map |
Segment izinleriyle bellek düzeni |
get_variables |
Bir fonksiyon için parametreler ve locals |
| Tool | Açıklama |
|---|---|
rename_function |
Bir fonksiyonu ada göre yeniden adlandırın |
rename_function_by_address |
Bir fonksiyonu adrese göre yeniden adlandırın |
rename_data |
Bir veri etiketini yeniden adlandırın |
rename_variable |
Yerel bir değişkeni yeniden adlandırın |
set_decompiler_comment |
Decompiler görünümü için yorum ayarlayın |
set_disassembly_comment |
Assembly görünümü için yorum ayarlayın |
set_function_prototype |
Tam fonksiyon prototype'ını ayarlayın |
set_local_variable_type |
Bir değişkenin veri türünü değiştirin |
set_bookmark |
Bir bookmark ekleyin |
remove_bookmark |
Bir bookmark'i kaldırın |
set_equate |
Bir scalar operand'a adlı sabit ayarlayın |
create_structure |
Bir structure veri türü oluşturun |
create_enum |
Bir enum veri türü oluşturun |
apply_data_type |
Bir adrese veri türü uygulayın |
set_namespace |
Bir fonksiyon için namespace veya class ayarlayın |
set_calling_convention |
Bir fonksiyon için calling convention ayarlayın |
set_image_base |
Image base adresini ayarlayın |
set_memory_permissions |
Bellek bloku izinlerini değiştirin |
| Tool | Açıklama |
|---|---|
patch_bytes |
Bir adresteki ham byte'ları yamayın |
get_basic_blocks |
Bir fonksiyon için basic block'ları alın |
extract_api_call_sequences |
Güvenlik analizi için API çağrı dizilerini çıkartın |
identify_user_input_sources |
Kullanıcı girdisi giriş noktalarını bulun |
generate_call_graph |
Hiyerarşik call graph oluşturun |
identify_crypto_patterns |
Crypto implementasyonlarını algılayın |
find_obfuscated_strings |
Obfuscate edilmiş string'leri bulun |
| Tool | Açıklama |
|---|---|
search_bytes |
Byte pattern'leri arayın |
emulate_function |
Bir fonksiyonu emüle edin |
extract_iocs |
Compromise indicators'ı çıkartın |
find_dynamic_api_resolution |
Dynamic API resolution'ını algılayın |
detect_anti_analysis |
Anti-analysis tekniklerini algılayın |
add_external_function |
Harici fonksiyon referansı ekleyin |
get_pe_info |
PE header detayları |
get_elf_info |
ELF header detayları |
| Tool | Açıklama |
|---|---|
create_memory_block |
Bir bellek bloku oluşturun |
detect_security_mitigations |
Binary güvenlik mitigasyonlarını algılayın |
find_format_string_vulns |
Format-string vulnerabilities'lerini bulun |
find_rop_gadgets |
ROP gadget'larını bulun |
detect_control_flow_flattening |
Control-flow flattening'i algılayın |
mark_code_coverage |
Kod coverage bölgelerini işaretleyin |
| Tool | Açıklama |
|---|---|
get_bookmarks |
Bookmark'leri listeleyin (isteğe bağlı adrese göre) |
list_equates |
Tüm equate'leri listeleyin |
ping |
Bağlantı sağlık kontrolü |
| Tool | Açıklama |
|---|---|
list_ghidra_instances |
8765-8774 portlarını çalışan Ghidra örnekleri için tarayın |
Tüm araçlar, çağrıları belirli bir Ghidra örneğine yönlendirmek için isteğe bağlı target_port parametresini kabul eder. Bu, ayrı Ghidra pencerelerinde açılan birden fazla binary dosyasıyla aynı anda çalışmanıza olanak tanır.
| Tool | Açıklama |
|---|---|
get_structure |
Bir structure'ın tüm detaylarını alın (fields, offsets, types) |
list_structures |
Tüm tanımlı structure'ları pagination ile listeleyin |
edit_structure |
Bir structure'a field ekleyin, değiştirin, silin, değiştirin veya temizleyin |
rename_structure |
Mevcut bir structure'ı yeniden adlandırın |
delete_structure |
Bir structure veri türünü silin |
| Tool | Açıklama |
|---|---|
decompile_function_async |
Büyük bir fonksiyonun async decompilation'ını başlatın (task ID döndürür) |
get_decompile_result |
Task ID'sine göre async decompilation sonucunu poll'layın |
Async decompilation, decompile etmesi 30+ saniye alabilen büyük fonksiyonlar için faydalıdır. İstemci decompilation'ı başlatabilir, diğer işleri devam ettirebilir ve sonucu daha sonra poll'layabilir.
Eklenti ayarlarını Ghidra'nın kullanıcı ayarları dizininde GhidraMCP.properties dosyasında depolar:
| Özellik | Varsayılan | Açıklama |
|---|---|---|
port |
8765 |
Java sunucusu için TCP portu |
localhost_only |
true |
Yalnızca localhost'a bağlanın |
api_key |
(boş) | Bridge kimlik doğrulaması için paylaşılan gizli |
auto_start |
true |
Eklenti yüklendiğinde sunucuyu başlatın |
bridge_enabled |
true |
Go bridge binary dosyasını otomatik olarak başlatın |
Tüm özellikleri GUI aracılığıyla yapılandırmak için Ghidra menüsünde MCP > Settings açın. İletişim kutusu şunları içerir:
claude_desktop_config.json dosyasına birleştirmek için Write to Claude Config düğmesiDeğişiklikler OK'a tıkladığınızda diske kaydedilir. Ayrıca özellikleri dosyasını iletişim kutusunda gösterilen yolda doğrudan düzenleyebilirsiniz.
auto_start false ise, sunucuyu Ghidra menüsünden MCP > Toggle Server seçerek el ile başlatın.
Not:
bridge_enabledayarı, bridge binary dosyasında hata ayıklayan veya TCP'ye doğrudan konuşan özel bir MCP istemcisi olan geliştiriciler için ileri seviyelerde kullanılır. Çoğu kullanıcı bunu etkin tutmalıdır.
Varsayılan olarak TCP sunucusu yalnızca localhost'a bağlanır ve API anahtarı yoktur, bu da yerel tek kullanıcılı kullanım için uygundur. Daha sıkı kurulumlar için:
authenticate isteği gönderirAPI anahtarı bridge'e GHIDRA_API_KEY ortam değişkeni aracılığıyla iletilir (CLI flag'i olarak değil) ve işlem argüman listesinde sızıntıyı önlemek için. Bridge'i el ile çalıştırırken ortam değişkenini ayarlayın:
# Linux/macOS
export GHIDRA_API_KEY="your-key-here"
./mcp_bridge --host localhost --port 8765
# Windows (PowerShell)
$env:GHIDRA_API_KEY = "your-key-here"
.\mcp_bridge.exe --host localhost --port 8765
Bir API anahtarı ayarlandığında, Ayarlar iletişim kutusundaki Write to Claude Config ve Copy to Clipboard düğmeleri otomatik olarak anahtarı env bloğuna ekler.
localhost_only=true (varsayılan) ile sunucu yalnızca 127.0.0.1'den bağlantıları kabul eder. Uzaktan erişime ihtiyacınız varsa false olarak ayarlayın (örn. headless sunucu üzerinde Ghidra), ancak localhost'un ötesine port açarken her zaman bir API anahtarı kullanın.
GhidraMCP, başka bir makinede çalışan AI istemcilerine hizmet verebilir. Bu, Ghidra bir headless analiz sunucusunda çalışırken AI istemcisi başka bir yerde çalışıyorsa faydalıdır.
Uzak makinede, MCP istemcisini Ghidra host'una işaret edecek şekilde yapılandırın:
{
"mcpServers": {
"ghidra": {
"command": "/path/to/mcp_bridge",
"args": ["--host", "ghidra-server.local", "--port", "8765"],
"env": {
"GHIDRA_API_KEY": "your-key-here"
}
}
}
}
Uyarı: Sunucuyu localhost'un ötesine açarken her zaman bir API anahtarı kullanın. Kimlik doğrulama olmadan, porta ulaşabilen herkesA Ghidra API'sine tam erişime sahiptir.
git clone https://github.com/13bm/GhidraMCP.git
cd GhidraMCP
cd mcp-bridge
go build -o mcp_bridge .
cd ..
export GHIDRA_INSTALL_DIR=/path/to/ghidra
gradle buildExtension
Uzantı ZIP dosyası dist/ dizininde olacaktır.
# Go testleri
cd mcp-bridge && go test ./... -v && cd ..
# Java unit + integration testleri (headless Linux'ta Xvfb gereklidir)
xvfb-run gradle test -PGHIDRA_INSTALL_DIR=$GHIDRA_INSTALL_DIR
Proje, otomatik derlemeler ve release'ler için GitHub Actions'ı kullanır:
build.yml -- master branch'e push/PR ve tag'ler üzerinde tetiklenir. Go testlerini çalıştırır, bridge'i 4 platform için çapraz derler, Xvfb altında Java unit + Ghidra entegrasyon testlerini çalıştırır, uzantı ZIP'ini derler ve v* tag'lerinde GitHub Releases oluşturur.check-ghidra-release.yml -- Günlük çalışır. Yeni Ghidra release'lerini algılar, bir version-bump PR açar, GitHub App aracılığıyla otomatik olarak onaylar ve tüm testler geçerse otomatik olarak birleştirir.Katkılar hoş karşılanır! Lütfen issue açın veya pull request gönderin.
git checkout -b feature/my-featureGhidraMCP, NSA veya Ghidra projesiyle bağlantılı değildir ve onaylanmamıştır.
IDA Pro için MCP sunucusu, AI asistanları ile binary analiz yapmanızı sağlar. Plugin decompilation, disassembly işlemlerini gerçekleştirir ve malware analiz raporlarını otomatik olarak oluşturmanıza imkan tanır.
Ghidra için bir Model Context Protocol sunucusu olup LLM'lerin uygulamaları özerk şekilde ters mühendislik yapmasını sağlar. Binary dosyaları derlemesini açma, metod ve veri adlandırma, metod/sınıf/import/export listeleme araçlarını sunar.
JADX-AI-MCP, JADX decompiler için bir plugin ve MCP Server olup Model Context Protocol (MCP) ile entegre edilerek Claude gibi LLM'lerle canlı reverse engineering desteği sağlar.
Beelzebub, MCP kullanarak honeypot araçları oluşturmanızı sağlayan bir framework'tür. Prompt injection ve kötü niyetli agent davranışlarını tespit etmek için tasarlanmıştır. Temel konsept, agente normal çalışmasında asla kullanmayacağı araçlar sunarak tehditli aktiviteleri yakalamaktır.
vet-mcp, yapay zeka kodlama araçları tarafından önerilen npm ve PyPI paketleri gibi açık kaynak paketleri güvenlik açıkları ve kötü amaçlı kodlar açısından kontrol eder. Docker üzerinde veya bağımsız bir binary olarak yerel olarak çalışarak hızlı ve otomatik doğrulama sağlar.
AI ajanlarının Semgrep kullanarak kodda güvenlik açıklarını taramasına izin verir.