دوز مباشرة للمحتوى الرئيسي
دروس فالذكاء الاصطناعي

ربط مساعد ذكاء اصطناعي بـ x64dbg باستعمال خادم x64dbg-MCP

تعلّم كيفاش تثبّت خادم x64dbg-MCP، تأمّن نقطة HTTP ديالو، تربط مساعد ذكاء اصطناعي متوافق مع MCP، وتدير مهام تصحيح الأخطاء الشائعة بحال تحميل الملفات التنفيذية، تعيين نقاط التوقّف، فحص السجلات، قراية الذاكرة، تتبّع الكود، وتحليل الوحدات.

ربط مساعد ذكاء اصطناعي بـ x64dbg باستعمال خادم x64dbg-MCP

شنو هو x64dbg-MCP Server؟

x64dbg-MCP Server هو إضافة أصلية ديال Model Context Protocol مخصّصة لـ x64dbg. كتكشف وظائف x64dbg عبر JSON-RPC فوق HTTP، وكتخلّي مساعد ذكاء اصطناعي متوافق مع MCP يتحكّم فجلسات تصحيح الأخطاء بشكل برمجي.

المساعد يقدر يحمّل أو يربط بعملية، يحدّد نقاط التوقّف، يدوز التعليميات خطوة بخطوة، يفحص السجلات، يقرا ويعدّل الذاكرة، يفحص الوحدات والخيوط، يستخرج السلاسل النصية، يتبع المراجع، يحلّل بنى PE، ويدير بزاف ديال عمليات الهندسة العكسية الأخرى.

الإضافة مكتوبة بـ Zig وكتخدم مباشرة داخل x64dbg. ما كتحتاجش Python ولا .NET ولا أي بيئة تشغيل منفصلة. كدعم مواصفة MCP 2024-11-05 مع Streamable HTTP ووسائل النقل القديمة SSE.

استعمل هاد البرنامج غير فالهندسة العكسية المشروعة، تحليل البرمجيات الخبيثة، أبحاث الأمن، التعليم، أو أي خدمة عندك عليها ترخيص صريح.

الميزات الرئيسية

  • تحكّم واسع فالمصحّح: الأدوات كتشمل التفكيك، التنفيذ، نقاط التوقّف، السجلات، الذاكرة، الوحدات، الخيوط، مكدسات الاستدعاء، الرموز، المراجع، تحليل PE، التتبّع، التفريغ، فحص PEB، وزيد عليهم.
  • تغطية أحداث المصحّح: الإضافة كتسجّل أحداث بحال التهيئة، التوقّفات، نقاط التوقّف، الاستثناءات، التنفيذ خطوة بخطوة، الربط بالعملية، نشاط DLL، ونشاط الخيوط.
  • نشر أصلي: الإضافة ما عندها حتى اعتماد على بيئة تشغيل أو إطار عمل خارجي.
  • دعم x32 وx64: قاعدة كود وحدة كاتبني إضافات لمعمارتي x64dbg بجوج.
  • جوج وسائل نقل ديال MCP: Streamable HTTP موصى به، بينما SSE كيدعم عملاء MCP القدامى.
  • المصادقة إجبارية: كل طلب خاصو يحمل Bearer token صالح.
  • التشغيل التلقائي: السيرفر كيبدا ملي كيتشغل x64dbg.
  • إعدادات مدمجة: قائمة x64dbg Plugins فيها إعدادات عنوان الربط، المنفذ، والتوكن.
  • الترجمة بين الأنظمة: Zig يقدر يبني إضافات Windows من Windows أو WSL أو Linux أو macOS.

كيفاش كتخدم عملية الدمج

ملي كيبدا x64dbg، الإضافة كتحل رموز واجهة برمجة المصحّح من x64bridge.dll وx64dbg.dll. من بعد كتشغّل سيرفر HTTP فخيط خدام فالكواليس. عميل MCP كيرسل طلبات JSON-RPC موثّقة، وكل أداة MCP كترتبط باستدعاءات SDK ديال x64dbg بحال تحديد نقطة توقّف، قراية الذاكرة، أو استئناف التنفيذ.

حيت الإضافة خدامة داخل عملية x64dbg، فهي كتتواصل مباشرة مع واجهة برمجة المصحّح. ما كاين لا برنامج مساعد خارجي لا خدمة ديال الاستطلاع المستمر.

ثبّت الإضافة

الخيار 1: تثبيت إصدار جاهز

  1. حمّل آخر حزمة من إصدارات GitHub ديال المشروع.
  2. فك ضغط الحزمة.
  3. نسخ محتويات المجلد dist/ ديالها للمجلد الجذر ديال تثبيت x64dbg.
  4. شغّل نسخة x32 أو x64 ديال x64dbg.

التوزيعة كتحافظ على نفس بنية المجلدات ديال x64dbg، وبهذا نسخها للمجلد الجذر كيثبّت الإضافتين الخاصتين بالمعمارية:

dist/
├── x32/
│   └── plugins/
│       └── x64dbg-MCP-Server.dp32
└── x64/
    └── plugins/
        └── x64dbg-MCP-Server.dp64

السيرفر كيبدا تلقائيا. المنافذ الافتراضية ديالو هي:

  • x64: 0.0.0.0:9094
  • x32: 0.0.0.0:9095

الخيار 2: البناء من المصدر

البناء كيحتاج Zig 0.16-dev أو إصدار أحدث. من المجلد الجذر ديال المستودع، نفّذ:

zig build -Doptimize=ReleaseSafe --prefix dist

الأمر كينشئ ملفات الإضافات ديال x32 وx64 بجوج داخل dist/. نسخ محتويات داك المجلد للمجلد الجذر ديال x64dbg، بنفس الطريقة ديال حزمة الإصدار الجاهزة.

إعداد السيرفر والمصادقة

فـ x64dbg، حلّ Plugins > x64dbg-MCP Server > Configure MCP Server.... النافذة كتخلّيك تبدّل عنوان الربط، المنفذ، وتوكن المصادقة.

  • استعمل 127.0.0.1 ملي كيكون عميل MCP خدام فنفس نظام Windows وما كايناش حاجة للولوج عن بُعد.
  • استعمل 0.0.0.0 ملي كتربط من WSL أو من جهاز آخر خاصو يوصل للمضيف عبر الشبكة.
  • اختار Copy باش تنسخ التوكن الحالي.
  • اختار Generate باش تبدّل التوكن.

كيتم إنشاء Bearer token تلقائيا فأول تشغيل. الطلبات اللي ما فيهاش التوكن الصحيح كتوصلها الاستجابة 401 Unauthorized. التغييرات المحفوظة كتطبّق مباشرة حيت السيرفر كيعيد التشغيل تلقائيا. الإعدادات كتتخزّن فـ mcp_config.json حدّ الملف التنفيذي ديال x64dbg.

السيرفر كيوفّر الولوج للقراية والكتابة فالذاكرة، والتحكّم فالعمليات، وتنفيذ أوامر المصحّح عبر HTTP غير مشفّر. ما تعرّضوش لشبكة غير موثوقة، حتى إلا كانت مصادقة Bearer إجبارية.

ربط عميل MCP

الإعداد الموصى به لـ Streamable HTTP

زيد إدخال ديال السيرفر فإعدادات عميل MCP ديالك، بحال .mcp.json. بالنسبة للمنفذ الافتراضي ديال x64، استعمل:

{
  "mcpServers": {
    "x64dbg": {
      "type": "http",
      "url": "http://localhost:9094/",
      "headers": {
        "Authorization": "Bearer YOUR_TOKEN_HERE"
      }
    }
  }
}

عوّض YOUR_TOKEN_HERE بالتوكن اللي نسختي من نافذة إعدادات الإضافة. إلا كنت كتستعمل x32dbg، بدّل المنفذ الافتراضي لـ 9095.

إعداد SSE للكلان القدامى

إيلا كان كلاينت ديال MCP ديالك كيدعم غير SSE، اختار الترانسبور sse وزيد /sse فالآخر ديال نقطة النهاية:

{
  "mcpServers": {
    "x64dbg": {
      "type": "sse",
      "url": "http://localhost:9094/sse",
      "headers": {
        "Authorization": "Bearer YOUR_TOKEN_HERE"
      }
    }
  }
}

بالنسبة لـ WSL ولا الولوج عن بُعد، بدّل localhost بعنوان IP ديال الهوست ديال Windows وتأكد باللي السيرفر مربوط بـ 0.0.0.0.

دير جلسة ديال الديباغينغ بمساعدة الذكاء الاصطناعي

من بعد ما تربط الكلاينت، حلّ x64dbg وطلب من المساعد يدير سلسلة صغيرة ديال مهام الديباغينغ. الجلسة العادية تقدر تبدا بـ:

حمّل calc.exe ووقف عند نقطة الدخول.

المساعد يقدر يجمع بين LoadBinary وSetBreakpoint وrun وWaitForPause باش يحمّل الملف التنفيذي، يعاود يكمل التنفيذ، ويتسنى حتى توصل العملية لنقطة التوقف.

فحص الريجيسترات

ملي يكون التارگيت واقف، طلب:

ورّيني الريجيسترات الحالية ديال المعالج.

المساعد يقدر يستعمل GetAllRegisters. وباش تبدّل شي قيمة وسط جلسة ديال الديباغينغ المسموح بها، يقدر يستعمل SetRegister.

قرا وتفكيك الميموار

طلب من المساعد يفحص الكود اللي حدا مؤشّر التعليمات الحالي:

قرا 64 بايت فمؤشّر التعليمات الحالي وفكّك التعليمات العشرة الجاية.

هاد العملية تقدر تستعمل GetCurrentAddress وReadMemory وDisassemble. وباش تفحص دالة كاملة محلّلة، طلب DisassembleFunction.

دُزّ فالكود خطوة بخطوة

أدوات التنفيذ كتماثل العمليات المعروفة فـ x64dbg:

  • StepInto كيدخل للاستدعاءات بحال F7.
  • StepOver كيدوز فوق الاستدعاءات بحال F8.
  • StepOut كيبقى خدام حتى ترجع الدالة الحالية.
  • run كيكمل التنفيذ بحال F9.
  • PauseDebug كيوقف التارگيت.
  • RunToAddress كيكمل حتى يوصل لعنوان محدد.

مثلاً:

دوز فوق التعليمات الثلاثة الجاية، ومن بعد ورّيني العنوان الحالي وكول ستاك.

المساعد يقدر يعيّط لـ StepOver ثلاث مرات، ومن بعد لـ GetCurrentAddress وGetCallStack.

استعمل نقاط التوقف بفعالية

البلاغين كيدعم نقاط التوقف العادية ديال السوفتوير، ونقاط التوقف بالهاردوير، ونقاط توقف الميموار، ونقاط التوقف الشرطية، ونقاط توقف الاستثناءات.

مثال على نقطة توقف شرطية

دير نقطة توقف على الدالة المستهدفة، ولكن وقف غير ملي يكون الشرط المحدد ديال x64dbg صحيح.

المساعد يقدر يستعمل SetConditionalBreakpoint مع تعبير شرطي ديال x64dbg وإجراء اختياري لتسجيل الأحداث. الأدوات المرتبطة تقدر تفعّل نقطة التوقف، تعطلها، تبدّل حالتها، تحيدها، ولا تصفّر عدد المرات اللي تضربات فيها.

نقاط التوقف بالهاردوير والميموار

استعمل SetHardwareBreakpoint لمراقبة القراية أو الكتابة أو التنفيذ عبر ريجيسترات الديباغينغ المتاحة. واستعمل SetMemoryBreakpoint ملي تكون المراقبة على مستوى صفحات الميموار أنسب للتحقيق.

قبل ما تزيد نقاط توقف أخرى، طلب من المساعد يعيّط لـ ListBreakpoints. هاد الشي كيساعد يتفادى الحالات المكررة ولا المتعارضة ديال الديباغر.

حلّل الموديولات والرموز والمراجع

السيرفر كيوفّر بزاف ديال الأدوات باش تدوز من الديباغينغ منخفض المستوى لتحليل أوسع للبرنامج:

  • ListModules كيعرض الموديولات المحمّلة، العناوين الأساسية، والأحجام.
  • AnalyzeModule كيفحص أقسام PE، نقطة الدخول، وحجم الصورة.
  • GetImports وGetExports كيفحصو جداول الاستيراد والتصدير.
  • SearchSymbols كيقلب على الرموز اللي كيطابقو نمطاً معيناً.
  • GetFunctions كيعرض الدوال والليبلات المحلّلة.
  • GetReferences كيلقا مراجع CALL وJMP لعنوان مستهدف.
  • FindPattern كيفحص ميموار الموديول وكيدعم وايلدكاردات ??.
  • GetStrings كيستخرج النصوص ASCII من ميموار الموديول.
  • DetectOEP كيساعد يلقى نقطة الدخول الأصلية ديال الملفات التنفيذية المضغوطة.

طلب عملي للتحليل يقدر يكون:

عرض الموديولات المحمّلة، حلّل الملف التنفيذي الرئيسي، استخرج النصوص ASCII ديالو، وورّيني المراجع للدالة المختارة.

نصائح متقدمة

استعمل سيرورات واعية بالأحداث

ما تفترضش باللي التارگيت وقف مباشرة من بعد ما كملتي التنفيذ. استعمل WaitForPause ولا WaitForEvent من بعد run، أو عمليات نقاط التوقف، أو أي عمليات أخرى غير متزامنة ديال الديباغر. وGetEventLog يقدر يراجع نقاط التوقف والاستثناءات وتحميلات DLL والأحداث المرتبطة اللي وقعات مؤخراً.

دير التراس بدل ما تعاود الخطوات وحدة بوحدة

إلى بغيتي تاريخ قصير ديال التعليمات، استعمل TraceInto باش تسجّل العناوين والتفكيك وأنت داخل للاستدعاءات خطوة بخطوة. واستعمل TraceOver ملي بغيتي تدوز فوق الاستدعاءات. هاد الطريقة أسهل من إرسال بزاف ديال طلبات الخطوة المنفصلة.

فحص مجموعة ديال التعبيرات

EvalExpression كيقيّم تعبيراً ديال x64dbg بحال عنوان، ريجيستر، ولا تعبير حسابي. ملي خاص مراقبة بزاف ديال القيم مع بعضياتها، استعمل WatchExpressions باش تقيّم عدة تعبيرات فطلب واحد.

حافظ على حالة التحليل ورجّعها

استعمل CommentOrLabelAtAddress وأدوات العلامات المرجعية باش تعلّم على المواقع المهمة. وعيّط لـ SaveDatabase باش تحفظ قاعدة بيانات x64dbg فملف .dd64 ولا .dd32.

طبّق الباتش بحذر

WriteMemToAddress كيبدّل البايتات، بينما Assemble كيكتب تعليمة مُجمَّعة فعنوان معيّن. عاين البايتات الموجودة وسجّل التغييرات قبل التعديل. استعمل GetPatches باش تراجع التعديلات، وRestorePatches باش ترجع البايتات الأصلية.

بحث فهياكل العملية

استعمل GetPEB باش تعاين حقول Process Environment Block، وGetSEHChain باش تشوف سلسلة Structured Exception Handler ديال x32، وGetArguments باش تعاين معاملات الدوال من الريجيسترات ولا من الستاك. FollowPointer يقدر يتبع سلسلة ديال المؤشرات ويفكّ الإشارة لعدد محدد من المستويات.

خلي التعرض للشبكة محدود

فضّل 127.0.0.1 إلا كانت الاتصالات عن بُعد ضرورية. إلا كان خاصك تربط بـ 0.0.0.0، قيّد الولوج باستعمال ضوابط شبكة موثوقة، وحمي التوكن، وبدّلو إلا شكّيتي فالتعرض ديالو. تذكّر بلي النقل هنا عبر HTTP وماشي HTTPS مشفّر.

أدوات تشغيل مفيدة

  • GetDebugState كيتأكد واش جلسة التصحيح خدامة، وكيعطي PID ومؤشر التعليمة.
  • AttachProcess كيربط x64dbg بعملية خدامة باستعمال PID.
  • ExecuteDebuggerCommand كينفّذ أمر ديال x64dbg مباشرة.
  • ListCommandsByCategory كيساعد عميل MCP يكتاشف الأدوات المتاحة.
  • GetThreads وSwitchThread وSuspendThread وResumeThread كيدبّرو سياق الخيوط.
  • GetMemoryMap وGetDumpableRegions كيعرفو مناطق الذاكرة قبل قرايتها ولا تفريغها.
  • DumpMemory كيحفظ نطاق محدد من الذاكرة، بينما DumpModule كيحفظ موديول كامل.
  • StopDebug كينهي الجلسة الحالية، وRestartDebug كيعيد تشغيلها.

الخلاصة

خادم x64dbg-MCP كيربط قدرات التصحيح الأصلية ديال x64dbg بالمساعدين ديال الذكاء الاصطناعي المتوافقين مع MCP، بلا ما يحتاج لبيئة تشغيل خارجية. من بعد تثبيت الإضافات الصحيحة ديال x32 وx64، ونسخ Bearer token المُولَّد، وضبط نقطة نهاية HTTP ولا SSE، تقدر تسوق مسارات تصحيح كاملة باستعمال طلبات باللغة الطبيعية.

بدا بعنوان ربط محلي فقط وبمهام بسيطة للمعاينة اللي ما كتبدّل والو. من بعد دوز للتنقّل المرتبط بالأحداث، ونقاط التوقف الشرطية، والتتبّع، وتحليل PE، وتعديلات الذاكرة المضبوطة بعناية. استعمل الخادم ديما غير على أهداف مأذون بها، وتفادى تعريض واجهة HTTP غير المشفّرة ديالو لشبكات ما كاتوثقش فيها.