
MCP Server لـ Ghidra

ghidraMCP هو خادم Model Context Protocol يسمح لنماذج اللغة الكبيرة (LLMs) بالهندسة العكسية للتطبيقات بشكل مستقل. وهو يوفّر العديد من الأدوات من وظائف Ghidra الأساسية لعملاء MCP.
https://github.com/user-attachments/assets/36080514-f227-44bd-af84-78e29ee1d7f9
خادم MCP + إضافة Ghidra
pip install git+https://github.com/LaurieWired/GhidraMCP، ثم استخدم ghidra-mcp كأمر كما هو موضح أدناه)أولًا، نزّل أحدث إصدار من هذا المستودع. يحتوي هذا على إضافة Ghidra وعميل MCP بلغة Python. بعد ذلك، يمكنك استيراد الإضافة مباشرة إلى Ghidra.
File -> Install Extensions+ghidra_12.1.4_PUBLIC_<date>_GhidraMCP.zip من الإصدار الذي تم تنزيلهFile -> Configure -> DeveloperEdit -> Tool Options -> GhidraMCP HTTP Serverدليل التثبيت بالفيديو:
https://github.com/user-attachments/assets/75f0c176-6da1-48dc-ad96-c182eb4648c3
من الناحية النظرية، يجب أن يعمل أي عميل MCP مع ghidraMCP. تقبل معظم العملاء ملف إعداد JSON مثل التالي:
{
"mcpServers": {
"ghidra": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/LaurieWired/GhidraMCP",
"ghidra-mcp",
"--ghidra-server",
"http://127.0.0.1:8080/"
]
}
}
}
عنوان IP والمنفذ للخادم قابلان للتكوين ويجب ضبطهما للإشارة إلى نسخة Ghidra المستهدفة. إذا لم يتم ضبطهما، فسيتم تعيين كلاهما افتراضيًا إلى localhost:8080.
بالنسبة للعملاء الذين يتصلون بعنوان URL بدلًا من تشغيل أمر، شغّل خادم MCP بنفسك أولًا:
uvx --from git+https://github.com/LaurieWired/GhidraMCP ghidra-mcp --transport streamable-http --mcp-host 127.0.0.1 --mcp-port 8081 --ghidra-server http://127.0.0.1:8080/
ثم أضف http://127.0.0.1:8081/mcp كخادم بعيد في عميلك.
شغّل MCP: Add Server من لوحة الأوامر، أو أضف ما يلي إلى .vscode/mcp.json في مساحة العمل الخاصة بك:
{
"servers": {
"ghidra": {
"type": "stdio",
"command": "uvx",
"args": [
"--from",
"git+https://github.com/LaurieWired/GhidraMCP",
"ghidra-mcp",
"--ghidra-server",
"http://127.0.0.1:8080/"
]
}
}
}
شغّل الأمر التالي:
claude mcp add ghidra -- uvx --from git+https://github.com/LaurieWired/GhidraMCP ghidra-mcp --ghidra-server http://127.0.0.1:8080/
يمكن لـ ghidra-mcp أيضًا استيراد ملف ثنائي وتحليله بنفسه باستخدام PyGhidra، دون تشغيل واجهة Ghidra الرسومية. يتطلب هذا Python 3.10–3.13، وإضافة GhidraMCP مثبّتة في Ghidra (أو --extension-jar /path/to/GhidraMCP.jar)، وضبط GHIDRA_INSTALL_DIR على دليل Ghidra 12.1.4 الخاص بك:
uvx --python 3.13 --from "ghidra-mcp[headless] @ git+https://github.com/LaurieWired/GhidraMCP" ghidra-mcp --headless --binary /path/to/target
استخدم نفس الأمر والوسائط في أي من إعدادات العملاء أعلاه. أضف --project DIR للاحتفاظ بمشروع Ghidra (وحفظ التغييرات) بين التشغيلات. على macOS، ابنِ مفكّك التجميع الخاص بـ Ghidra مرة واحدة باستخدام support/gradle/gradlew buildNatives من دليل Ghidra.
GHIDRA_INSTALL_DIR على دليل Ghidra 12.1.4 الخاص بكcd extension && $GHIDRA_INSTALL_DIR/support/gradle/gradlew buildExtension
يتضمن ملف zip الناتج في extension/dist/ إضافة Ghidra المبنية ومواردها. هذه الملفات مطلوبة لكي يتعرّف Ghidra على الإضافة الجديدة.
يمكن تشغيل خادم MCP بلغة Python من نسخة محلية عبر uv run ghidra-mcp، واختباره عبر uv run pytest.