
خادم MCP لـ Binary Ninja بدون واجهة — يمنح وكلاء الذكاء الاصطناعي قدرات عميقة في الهندسة العكسية عبر 180 أداة.
خادم Binary Ninja بدون واجهة رسومية يتحدث MCP (بروتوكول سياق النموذج)، مما يمنح وكلاء الذكاء الاصطناعي وصولاً كاملاً إلى سير عمل الهندسة العكسية العميقة — التفكيك، اللغة الوسيطة، التصحيح، الأنواع، المراجع المتقاطعة، والمزيد — بدون واجهة مستخدم.
مُصمم للتشغيل داخل نفس حاوية Docker التي يعمل فيها وكيل runtime. لا مكونات جانبية، لا خدمات إضافية.
هذا المشروع بأكمله — الكود، الاختبارات، والتوثيق — تمت برمجته بنسبة 100% باستخدام الـ vibe coding.
خوادم Binary Ninja MCP الحالية إما مقيدة بواجهة المستخدم الرسومية أو تقدم سطح أدوات محدود. هذا الخادم مخصص لوضع headless فقط ومصمم لسير العمل المدفوعة بالوكيل في بيئات الحاويات/الأجهزة الافتراضية المعزولة: يحصل الوكيل على السيطرة الكاملة على نظام التحليل، مما يؤتمت أجزاء كبيرة من الهندسة العكسية بينما تتفاعل أنت وتوجه العملية بشكل تفاعلي.
الهدف هو واجهة يمكن للوكلاء من خلالها فحص التحليل وتحسينه وتوسيعه بمرور الوقت — تحديث الأنواع والرموز والبيانات الوصفية، وتحسين قاعدة بيانات التحليل تدريجياً، وتطبيق التصحيحات والتكرار بأمان مع خيارات التراجع والإعادة، وتشغيل البرامج النصية المخصصة عندما يتطلب سير العمل شيئاً خاصاً.
binja.eval و binja.call لأي شيء لا يشمله كتالوج الأدوات.3.11+binaryninja القابلة للاستيراد في بيئة التشغيل الخاصة بك (للتحليل الحقيقي)git clone https://github.com/mrphrazer/binary-ninja-headless-mcp.git
cd binary-ninja-headless-mcp
pip install .
أو قم بالتثبيت مباشرة من جذر المستودع بدون استنساخ:
pip install git+https://github.com/mrphrazer/binary-ninja-headless-mcp.git
نقل عبر stdio (الافتراضي):
python3 binary_ninja_headless_mcp.py
نقل عبر TCP:
python3 binary_ninja_headless_mcp.py --transport tcp --host 127.0.0.1 --port 8765
وضع الواجهة الخلفية المزيفة (لا يتطلب Binary Ninja):
python3 binary_ninja_headless_mcp.py --fake-backend
يتحدث هذا الخادم بروتوكول MCP القياسي عبر stdio (الافتراضي) أو tcp، لذا يمكن لأي مضيف وكيل يدعم MCP استخدامه.
claude mcp add binary_ninja_headless_mcp -- python3 /path/to/binary-ninja-headless-mcp/binary_ninja_headless_mcp.py
أو أضفه إلى .mcp.json الخاص بمشروعك:
{
"mcpServers": {
"binary_ninja_headless_mcp": {
"command": "python3",
"args": ["binary_ninja_headless_mcp.py"],
"cwd": "/path/to/binary-ninja-headless-mcp"
}
}
}
codex mcp add binary_ninja_headless_mcp -- python3 binary_ninja_headless_mcp.py
binary_ninja_headless_mcp.python3 مع الوسائط ["binary_ninja_headless_mcp.py"] عندما يكون cwd هو جذر المستودع، أو استخدم مسارًا مطلقًا للبرنامج النصي في args.cwd على مسار المستودع إذا كنت تريد أن تعمل المسارات النسبية مثل samples/ls بشكل صحيح.--fake-backend.health.ping، ثم session.open.نموذج النشر الموصى به: تشغيل عملية الوكيل وخادم MCP هذا في نفس صورة الحاوية.
مثال أساسي:
FROM python:3.11-slim
WORKDIR /app
COPY . /app
RUN python -m pip install --upgrade pip && pip install ruff pytest
CMD ["python3", "binary_ninja_headless_mcp.py"]
إذا كنت بحاجة إلى تحليل Binary Ninja حقيقي داخل الحاوية، أضف بيئة تشغيل Binary Ninja الخاصة بك + إعداد الترخيص في نفس الصورة وابدأ الوكيل مع تكوين خادم MCP هذا.
initializepingtools/listtools/callshutdownسلوك tools/list:
offset أو limit، يستخدم إخراجًا مقسمًا إلى صفحات (offset=0, limit=50 بشكل افتراضي في وضع الصفحات).prefix (مثلاً binary.)query (مطابقة جزئية لاسم الأداة/الوصف)offset, limit, total, has_more.has_more=true)، يتضمن next_offset وتلميح notice.سلوك استجابة استدعاء الأداة:
structuredContent هو الحمولة الكاملة الأساسية.content[0].text هو سلسلة ملخص مضغوطة (ليست تكرار JSON كاملاً).هذا المستودع مختبر جيداً وله بوابات جودة إلزامية.
pytest --collect-only -q للحصول على عدد الاختبارات المجمعة الحالي.ruff format --check .ruff check .pytestBINARY_NINJA_HEADLESS_MCP_FAKE_BACKEND=1 حتى تعمل الفحوصات دون الحاجة إلى تثبيت Binary Ninja.read_only=true).binary.basic_blocks_at و function.basic_blocks مقسمة إلى صفحات (offset/limit).memory.read له حد أقصى للاستجابة: length <= 65536.stdio/tcp) غير مصادق عليها بشكل افتراضي.binja.eval ووصولاً واسعاً لواجهة برمجة التطبيقات عبر binja.call.ruff format --check .
ruff check .
BINARY_NINJA_HEADLESS_MCP_FAKE_BACKEND=1 pytest -q
استخدم مدمج اختبار الميزات (MCP feature fuzzer) المدمج لاختبار سطح أدوات واسع مقابل samples/ls.
واجهة خلفية حقيقية لـ Binary Ninja:
python3 -m binary_ninja_headless_mcp.fuzzer --binary samples/ls --iterations 120 --seed 1337
تشغيل اختبار دخاني بالواجهة الخلفية المزيفة:
python3 -m binary_ninja_headless_mcp.fuzzer --binary samples/ls --fake-backend --iterations 20
كتابة تقرير تغطية بتنسيق JSON:
python3 -m binary_ninja_headless_mcp.fuzzer --binary samples/ls --report-json /tmp/mcp-fuzzer-report.json
علامات مفيدة:
--min-success-tools N: يخرج برمز غير صفري إذا نجحت أدوات أقل من N.--verbose: طباعة كل استدعاء أداة أثناء الاختبار.--update-analysis: فتح الجلسة الأولية مع update_analysis=true.يعرض الخادم حالياً 181 أداة عبر 36 مجموعة ميزات.
analysis.status: الحصول على حالة التحليل.analysis.progress: الحصول على لقطة للتقدم في التحليل.analysis.update: تشغيل تحديث تحليل غير متزامن.analysis.update_and_wait: تشغيل تحديث تحليل وانتظار الاكتمال.analysis.abort: إلغاء التحليل.analysis.set_hold: تعليق/تحرير قائمة انتظار التحليل.