Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
diaphora-mcp — خادم MCP للتباين الثنائي الآلي. | Kitploit
أدوات/GitHubGitHub/xteardx/diaphora-mcp
التحليل الثابتتحليل الثغرات الأمنيةالهندسة العكسيةمصممي الأخطاءالاختبار العشوائيتحليل الملفات الثنائيةاستغلال الملفات الثنائية
GitHubxteardx/diaphora-mcp

diaphora-mcp

خادم MCP للتباين الثنائي الآلي.

عرض المستودع
1731منذ شهر واحدلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

Читать на русском языке

Diaphora MCP

Diaphora MCP هو خادم MCP (بروتوكول سياق النموذج) للمقارنة الثنائية الآلية. يربط بين Diaphora (محرك المقارنة) و IDA Pro (مفكك التجميع) عبر بروتوكول MCP، مما يسمح للوكلاء الذكيين (مثل Claude Code) بإجراء مقارنة الملفات الثنائية، والعثور على التصحيحات الأمنية، وتحليل التغييرات.

الميزات

  • التصدير: يحول قواعد بيانات .i64 / .idb التي تم تحليلها إلى تنسيق Diaphora SQLite (عبر وضع idat.exe بدون واجهة)
  • المقارنة: يقارن بين قاعدتي بيانات تم تصديرهما، ويصفّي النتائج حسب نوع المطابقة والنسبة
  • تحليل الثغرات: يبحث عن التغييرات ذات الصلة بالأمان باستخدام مطابقة الكلمات الرئيسية والإرشادات الاستدلالية
  • كشف التصحيحات: يكتشف تلقائياً عمليات التحقق الجديدة من الحدود، والتحقق من القيم الفارغة، ومعالجة الأخطاء، والتغييرات في التشفير
  • الترتيب: يرتب الدوال المتغيرة حسب الأهمية بناءً على CFG، والقفزات المعقدة، والمؤشرات الأمنية
  • رسم بياني للاستدعاءات: يقارن مسارات الاستدعاء (BFS، حتى N مستويات)، ويكشف تغييرات السبب الجذري في تسلسلات الاستدعاء
  • نقل البيانات الوصفية: يهيئ الأسماء والتعليقات والنماذج الأولية للنقل بين قواعد البيانات
  • التكامل مع IDA Pro MCP: جميع الأدوات تُرجع العناوين ومسارات قواعد البيانات الجاهزة للإرسال مباشرة إلى أدوات IDA Pro MCP

التثبيت

1. المتطلبات

  • Python 3.10+
  • IDA Pro 8.x / 9.x (للتصدير بدون واجهة عبر idat.exe)
  • إضافة Diaphora المثبتة في IDA
  • Claude Code (أو أي عميل متوافق مع MCP)

2. تثبيت الحزمة

root@kitploit:~
git clone https://github.com/xTeardx/diaphora-mcp.git
cd diaphora-mcp
pip install -e .

3. إعداد المسارات

يحاول الحزمة العثور تلقائياً على IDA Pro و Diaphora في مواقع التثبيت القياسية. إذا لم يتم العثور عليهما، يمكنك تعيين متغيرات البيئة التالية:

بالنسبة لـ Claude Code، يمكنك تحديدها في ~/.claude.json (أو ملف التكوين المطابق لعميل MCP الخاص بك):

root@kitploit:~
{
  "mcpServers": {
    "diaphora": {
      "command": "python",
      "args": ["path/to/repo/diaphora_mcp_server.py"],
      "env": {
        "IDAT_PATH": "C:\\Program Files\\IDA Pro 9.3\\idat.exe",
        "DIAPHORA_DIR": "C:\\Program Files\\IDA Pro 9.3\\plugins\\diaphora-3.4.1"
      },
      "timeout": 7200
    }
  }
}

ملاحظة: بالنسبة للملفات الثنائية الكبيرة جداً (>100 MB)، تأكد من أن timeout لا يقل عن 7200 (ساعتين).

3.1. Codex و IDA MCP بدون واجهة

يستخدم Codex عادةً خادمي MCP متكاملين:

  • diaphora-mcp — هذا المشروع: التصدير، مقارنة Diaphora، وتحليل النتائج؛
  • ida-pro-mcp — خادم فحص IDA الأساسي لـ idb_open، وإعادة التجميع، والتحليل على مستوى العنوان.

idalib-mcp هو الجزء الخلفي بدون واجهة لـ ida-pro-mcp، وليس خادماً منفصلاً لـ Diaphora. بعد تثبيته، أعد تشغيل Codex:

root@kitploit:~
uv run ida-pro-mcp --install codex --transport streamable-http --scope global --ida-rpc http://127.0.0.1:8745/mcp

بالنسبة لهذا المشروع، يكفي تكوين stdio:

root@kitploit:~
[mcp_servers.diaphora-mcp]
command = "python"
args = ["D:\\path\\to\\diaphora-mcp\\diaphora_mcp_server.py"]
startup_timeout_sec = 120

4. تحضير قواعد البيانات للمقارنة

يجب على IDA Pro تحليل الملفات الثنائية أولاً (إنشاء ملفات .i64 أو .idb). بعد ذلك:

root@kitploit:~
┃ export_idb_to_diaphora(idb_path="old_version.i64")
┃ export_idb_to_diaphora(idb_path="new_version.i64")

أو تشغيل المسار الكامل في أمر واحد:

root@kitploit:~
┃ batch_export_and_diff(idb1="old.i64", idb2="new.i64")

لا تمرر .i64 مباشرة إلى أدوات النتائج: إنها قاعدة بيانات IDA، وليست SQLite. قم بتصديرها أولاً.

بدء سريع

root@kitploit:~
┃ # 1. مسار كامل: تصدير ملفين .i64 → مقارنة → تقرير ملخص
┃ batch_export_and_diff(idb1="v1.0.i64", idb2="v1.1.i64")
 
┃ # 2. إذا كانت قواعد البيانات مصدرة بالفعل
┃ diff_diaphora_dbs(db1="v1.0.sqlite", db2="v1.1.sqlite")
 
┃ # 3. تحليل أمني لنتائج المقارنة
┃ analyze_diff_results(results_path="v1.0_vs_v1.1.diaphora")
 
┃ # 4. ترتيب التغييرات حسب الأهمية
┃ rank_changes(results_path="v1.0_vs_v1.1.diaphora", top_n=20)
 
┃ # 5. العثور على تغييرات السبب الجذري
┃ find_patch_root(results_path="v1.0_vs_v1.1.diaphora")
 
┃ # 6. كشف التصحيحات الأمنية المحتملة
┃ detect_security_patches(results_path="v1.0_vs_v1.1.diaphora")
 
┃ # 7. إنشاء تقرير كامل
┃ summarize_patch(results_path="v1.0_vs_v1.1.diaphora")

مثال (نص جلسة حية)

انظر examples/basic-session.md للحصول على نص كامل خطوة بخطوة لجلسة حقيقية مع Diaphora MCP — من تصدير قاعدتي بيانات IDB إلى مقارنة الدوال الفردية. متوفر أيضاً باللغة الروسية.

إليك لمحة سريعة عما يعيده الخادم:

الإدخال — مقارنة ملفي SQLite3 DLL (2015 مقابل 2023):

root@kitploit:~
{"idb1_path": "old.i64", "idb2_path": "new.i64", "use_decompiler": false}

الإخراج — ملخص بعد التصدير + المقارنة:

root@kitploit:~
{
  "best_matches": 60,
  "partial_matches": 993,
  "multimatches": 52,
  "unmatched_primary": 2647
}

تستعرض الجلسة 6 استدعاءات لأدوات MCP، مع إظهار JSON الدقيق لكل خطوة، إلى جانب منطق الوكيل.

التحقيق في قاعدة بيانات واحدة

root@kitploit:~
┃ # الحصول على معلومات تصدير قاعدة البيانات
┃ get_export_info(db_path="app.sqlite")
 
┃ # البحث عن الدوال
┃ search_export_db(db_path="app.sqlite", name_pattern="%crypt%", min_instructions=50)
 
┃ # استرجاع الكود الزائف
┃ get_function_pseudocode(db_path="app.sqlite", address="401000")

هيكل المشروع

root@kitploit:~
diaphora-mcp/
├── diaphora_mcp_server.py          # نقطة الدخول الرئيسية
├── diaphora_mcp/
│   ├── diaphora_mcp_server.py      # تسجيل أداة MCP
│   ├── config.py                   # تكوين المسار والكشف التلقائي
│   ├── models.py                   # الثوابت والنماذج
│   ├── core/
│   │   ├── export.py               # التصدير بدون واجهة، المسار الدفعي
│   │   ├── diff.py                 # المقارنة وقارئ نتائج .diaphora
│   │   ├── analysis.py             # البحث عن الدوال، المقارنة، التفسير
│   │   ├── security.py             # مطابقة الكلمات الرئيسية، كشف التصحيحات
│   │   ├── ranking.py              # ترتيب الأهمية
│   │   ├── graph.py                # رسم الاستدعاءات، أشجار BFS، السبب الجذري
│   │   ├── metadata.py             # إعداد البيانات الوصفية (الأسماء، التعليقات)
│   │   └── report.py               # إنشاء تقرير التصحيح الكامل
│   └── utils/
│       ├── sqlite.py               # مساعدات SQLite
│       ├── format.py               # مقارنة الكود الزائف، استخراج متجه الميزات
│       └── log.py                  # أدوات تسجيل التصدير
├── _diaphora_headless.py           # idat.exe -S غلاف رقيق
└── logs/                           # سجلات التصدير الآلية (تُنشأ ديناميكياً)

مرجع أدوات MCP (21 أداة)

التصدير

الأداةالوصف
export_idb_to_diaphoraيصدر قاعدة بيانات .i64/.idb إلى تنسيق SQLite باستخدام IDA بدون واجهة
batch_export_and_diffمسار كامل: تصدير أساسي → تصدير ثانوي → مقارنة → ملخص

المقارنة

الأداةالوصف
diff_diaphora_dbsيقارن بين قاعدتي بيانات Diaphora SQLite تم تصديرهما
get_diff_resultsيقرأ ملف المقارنة .diaphora مع إمكانية التصفية
get_diff_summaryيعيد إحصائيات المطابقة

التحليل

الأمان

الأداةالوصف
detect_security_patchesيكتشف إصلاحات الأمان المحتملة (فحوصات الحدود، سلامة الذاكرة، مكافحة التصحيح، إلخ)

الترتيب

الأداةالوصف
rank_changesيرتب الدوال المتغيرة حسب الأهمية (درجة 0-100)

رسم الاستدعاءات

الأداةالوصف
get_changed_callgraphيقارن الاستدعاءات الواردة والصادرة لدالة
compare_call_pathيمشي في رسم الاستدعاءات من دالة (مقارنة مسار BFS، حتى N مستويات)
find_patch_rootيكتشف دوال السبب الجذري المسببة لتسلسلات الاستدعاء

الأداء

الأداةالوصف
performance_reportيعيد إحصائيات الذاكرة والذاكرة المؤقتة والاتصال المجمعة

البيانات الوصفية

الأداةالوصف
transfer_metadataيهيئ الأسماء والتعليقات والنماذج الأولية للنقل المجمع

تكامل IDA Pro GUI (جسر XML-RPC)

يتضمن المشروع تكاملاً مدمجاً مع جلسات IDA Pro GUI النشطة، مما يتيح التصدير الفوري مباشرة من نوافذ IDA النشطة دون تعارضات في إغلاق قاعدة البيانات.

  1. البدء التلقائي: انسخ diaphora_gui_listener.py إلى دليل plugins/ الخاص بـ IDA Pro. سيبدأ خادم XML-RPC في الخلفية على المنفذ 28652 كلما بدأ IDA.
  2. التصدير الذكي: عند استدعاء export_idb_to_diaphora، يتحقق خادم MCP من المنفذ 28652. إذا كانت هناك جلسة نشطة، فإنه ينفذ التصدير مباشرة في GUI. وإلا، فإنه يتراجع تلقائياً إلى التنفيذ الخلفي بدون واجهة عبر idat.exe.

للحصول على تعليمات مفصلة حول تكوين الجسر، انظر GUI_INSTRUCTIONS.md.

التعامل مع قواعد البيانات الضخمة جداً (100k+ دالة)

عند معالجة مشاريع كبيرة جداً، يطبق Diaphora MCP تحسينات محددة:

  • حد التكرار: يتم رفع حد التكرار في Python تلقائياً إلى 100000 (sys.setrecursionlimit) لمنع الأعطال أثناء تجول الرسوم البيانية الكبيرة للاستدعاءات.
  • تحسينات معاملات SQLite: في ملف diaphora_config.py الخاص بك، يؤدي تعيين COMMIT_AFTER_EACH_GUI_UPDATE = False إلى تقليل عمليات الكتابة على القرص، مما يسرع التصدير عبر GUI بمقدار 2 إلى 3 مرات.
  • الكود الصغير لـ Hex-Rays: قم بتعطيل تصدير الكود الصغير (EXPORTING_USE_MICROCODE = False في تكوين Diaphora) من أجل تصدير أسرع عندما لا يكون مفكك التجميع مطلوباً بشكل صارم.

تكامل IDA Pro MCP

أدوات مثل analyze_diff_results و compare_functions و find_function_match تُرجع كتلة ida_pro_mcp تحتوي على العناوين والمسارات. يمكن تمرير هذه المعلومات مباشرة إلى أدوات ida-pro-mcp:

root@kitploit:~
┃ # 1. Diaphora يجد دالة مشبوهة
┃ analyze_diff_results(results_path="diff.diaphora")
┃   → addr1="401000", db1="old.sqlite"
 
┃ # 2. IDA Pro MCP يفك تجميعها
┃ decompile_function(address="401000")

أمثلة

لرؤية Diaphora MCP أثناء العمل، تحقق من الأمثلة التالية:

  • نص جلسة أساسية: تجول حقيقي لجلسة MCP مع JSON دقيق للإدخال/الإخراج لكل استدعاء أداة — من التصدير إلى مقارنة الدوال. متوفر أيضاً باللغة الروسية.

إرشادات للوكيل الذكي (مهم)

إذا كنت مساعد برمجة ذكي (مثل Claude Code) يستخدم هذا البروتوكول، ضع في اعتبارك قواعد التوافق التالية:

  1. أنماط التصدير عبر GUI مقابل بدون واجهة:

    • التصدير عبر جلسة GUI نشطة (إضافة ida_mcp.py) ينتج مخططاً مخصصاً يحتوي على جداول مثل calls، strings، structures، لكن لا يحتوي على جدول program.
    • التصدير بدون واجهة (عبر idat.exe) ينتج مخطط Diaphora الرسمي الذي يحتوي على جدول program.
    • مهم: محرك المقارنة (diff_diaphora_dbs) يتطلب المخطط الرسمي. قم دائماً بالتصدير بدون واجهة إذا كنت تنوي مقارنة/تمييز قواعد البيانات.
  2. قواعد البيانات المؤمنة في GUI:

    • قاعدة البيانات المفتوحة حالياً في IDA Pro GUI تكون مؤمنة. محاولة تصديرها بدون واجهة ستفشل.
    • إذا كنت بحاجة إلى مقارنة قاعدة البيانات المفتوحة حالياً، اطلب من المستخدم إغلاقها في GUI (أو فتح قاعدة بيانات وهمية) لتحرير قفل الملف، ثم قم بتشغيل تصدير بدون واجهة.
  3. تجنب تعارض أسماء قواعد البيانات:

    • قواعد بيانات تصدير Diaphora تكون افتراضياً <basename>.diaphora.sqlite.
    • لا تستخدم أبداً <basename>.sqlite لتصديرات Diaphora، حيث يتعارض ذلك مع قاعدة البيانات المخبأة الداخلية التي ينشئها المشرف .

حالة التحقق والقيود

تجاوزت تركيبات IDA Pro 9.3 المختبرة مجموعة اختبارات الانحدار: 16 passed, 1 xpassed. تم أيضاً التحقق من تصدير مرحلي حقيقي ومقارنة Diaphora لملفي SQLite3 DLL. لا تزال قواعد البيانات الكبيرة أو المفتوحة عبر GUI تتطلب قفلاً حراً لـ IDA، وقيمة صالحة لـ DIAPHORA_OUTPUT_ROOT، ومهلة كافية لعميل MCP.

الترخيص

MIT

تنزيل الأداة
المتغيرالوصفمثال
IDAT_PATHالمسار الكامل لـ idat.exeC:\Program Files\IDA Pro 9.3\idat.exe
DIAPHORA_DIRالمجلد الذي يحتوي على diaphora.pyC:\Program Files\IDA Pro 9.3\plugins\diaphora-3.4.1
DIAPHORA_OUTPUT_ROOTالدليل الجذر المسموح به لملفات التصدير الجديدةD:\\diaphora-outputs
DIAPHORA_PYTHONمترجم Python لعملية المقارنة/usr/bin/python3 (الافتراضي هو sys.executable)
الأداةالوصف
analyze_diff_resultsيفحص النتائج باستخدام كلمات أمنية رئيسية ومرشحات
compare_functionsمقارنة جنباً إلى جنب لدالة في كلتا القاعدتين
find_function_matchيطابق دالة في الملف الثنائي الثاني مع مقاييس الثقة
explain_similarityيحلل عوامل التشابه (الرموز التذكيرية، CFG، الثوابت، النموذج الأولي، التجزئة)
detect_behavior_changeيقدم ملخصاً بلغة طبيعية لتغييرات منطق الدالة
summarize_patchينتج تقرير تحديث شامل
search_export_dbيستعلم الدوال المصدرة حسب الاسم/التعليمات/التعقيد
get_function_pseudocodeيجلب الكود الزائف والبيانات الوصفية لدالة
get_export_infoيسترجع البيانات الوصفية العامة لقاعدة البيانات
ida-pro-mcp