x64dbg
منقح برمجيات (Debugger) حديث ومفتوح المصدر لأنظمة Windows، صمم لتبسيط عملية التحليل الديناميكي وفك الحماية عن الملفات.
دليل x64dbg الشامل
يُعد x64dbg مصحح الأخطاء (Debugger) المفتوح المصدر والمفضل لنظام Windows عند تحليل البرمجيات الخبيثة (Malware Analysis). يتميز بواجهة رسومية أصلية لـ Win32، وقابلية للبرمجة النصية (Scriptable)، مع أداة شقيقة x32dbg مخصصة للبرامج بمعمارية 32 بت. نظام الإضافات (Plugins) المتطور فيه (مثل Scylla و ScyllaHide) يجعله الأداة الأساسية لفك التغليف (Unpacking) والتصحيح السلوكي.
التثبيت
قم بتشغيل x64dbg.exe لبرامج 64-بت أو x32dbg.exe لبرامج 32-بت.
الواجهة (Layout)
| التبويب | الغرض |
|---|---|
| CPU | التفكيك (Disassembly) + السجلات (Registers) + المكدس (Stack) + الذاكرة (Dump) |
| Graph | مخطط تدفق العمليات (Block-flow graph) |
| Log | مخرجات مصحح الأخطاء وسجل الأحداث |
| Breakpoints | عرض وإدارة نقاط التوقف |
| Memory Map | أقسام الذاكرة وصلاحيات الوصول إليها |
| Call Stack | تسلسل الاستدعاءات الحالي |
| SEH | معالجات الاستثناءات المنظمة |
| References | مراجع الاستدعاءات (XRefs) |
| Threads | الخيوط (Threads) النشطة |
| Handles | المقابض (Handles) المفتوحة في النظام |
الاختصارات الجوهرية
| المفتاح | الإجراء |
|---|---|
F9 | تشغيل (Run) |
F8 | تخطي التعليمات (Step over) |
F7 | الدخول في التعليمات (Step into) |
Ctrl+F9 | التشغيل حتى الوصول لترميز المستخدم (تجاوز DLLs النظام) |
F2 | تبديل نقطة التوقف (Toggle breakpoint) |
F4 | التشغيل حتى مؤشر الكتابة |
Ctrl+F2 | إعادة التشغيل (Restart) |
Ctrl+G | الانتقال إلى تعبير أو عنوان معين |
; | إضافة تعليق |
: | إضافة وسم (Label) |
Space | تعديل التعليمة البرمجية (Assemble) |
Ctrl+P | إدارة الترقيعات (Patches) |
مهام التحليل الشائعة
تعيين نقاط توقف عبر واجهة برمجة التطبيقات (API)
bp WriteFile
bp CryptEncrypt
bp send
bp wininet.dll:HttpSendRequestA
(بدلاً من ذلك: تبويب Symbols ← بحث ← زر الماوس الأيمن ← Toggle breakpoint)
نقاط التوقف الشرطية
bp <address>
SetBreakpointCondition <addr>, "rcx == 5"
SetHitCount <addr>, 10
نقاط توقف الذاكرة (Memory Breakpoints)
bphws <addr> r/w/x # نقطة توقف العتاد (Hardware)
bpm <addr> r/w/x 4 # الوصول للذاكرة (4 بايت)
الترقيع (Patching)
ضع المؤشر على التعليمة ← Space ← عدّل لغة التجميع ← حفظ الترقيع عبر File ← Patch File.
استخراج الذاكرة المفكوك تغليفها (Dumping)
بعد التشغيل حتى وصول مفكك التغليف (Unpacker) إلى ملف الـ PE الحقيقي في الذاكرة، استخدم إضافة Scylla: تأكد من أن ImageBase صحيح ← بحث تلقائي عن IAT ← استخراج (Dump) ← إصلاح الملف المستخرج (PE reconstruction).
الإضافات (Plugins)
| الإضافة | الغرض |
|---|---|
| Scylla | مدمجة - استعادة جداول IAT واستخراج الذاكرة |
| ScyllaHide | تجاوز تقنيات مكافحة التصحيح (تخفي IsDebuggerPresent و NtQueryInformationProcess) |
| xAnalyzer | تضيف وسائط الـ API إلى واجهة التفكيك |
| ret-sync | مزامنة مؤشر x64dbg مع IDA أو Ghidra |
| api-set-resolver | حل مشكلات DLLs الخاصة بـ Windows API set |
تعمل ScyllaHide على تعطيل آليات الكشف مثل:
- جعل
PEB.BeingDebugged = 0 - تنظيف
PEB.NtGlobalFlag - اعتراض واعتراض
NtSetInformationThread(إخفاء من المصحح) - تجاوز حوالي 95% من تقنيات مكافحة التصحيح الجاهزة.
سير العمل على عينة مغلفة (Packed Sample)
- افتح العينة في x64dbg ← سيتوقف تلقائياً عند TLS callbacks أو نقطة الدخول (EP).
- تأكد من تفعيل ScyllaHide بالملف التعريفي الافتراضي.
- ابحث عن نقطة الدخول الأصلية (OEP) عبر:
- وضع نقاط توقف على
bp VirtualAllocأوbp VirtualProtect. - وضع نقاط توقف "كتابة وتنفيذ" على مناطق الذاكرة (Heap).
- البحث عن "القفزة النهائية" (Tail Jump) التي تعيد التنفيذ إلى قسم
.textالأصلي.
- وضع نقاط توقف على
- عند الوصول لـ OEP ← استخدم Scylla ← بحث IAT ← ملء المستوردات (Fill imports) ← Dump.
- افتح ملف الـ PE المستخرج في IDA أو Ghidra للتحليل الساكن.
استكشاف الأخطاء وإصلاحها
| العرض | الحل |
|---|---|
| العينة تغلق فوراً | تقنيات مكافحة تصحيح؛ فعل ScyllaHide واستخدم bp NtCreateThreadEx للتوقف قبل التنفيذ |
| الرموز (Symbols) لا تظهر | قم بتعيين مسار الرموز في Options ← Preferences ← Symbols |
| الخروج عند RtlExitUserThread | انتهى تنفيذ العملية؛ أعد التشغيل وضع نقاط توقف مبكرة |
| فشل إصلاح المستوردات (Imports) | تم العبث بجدول IAT من قبل المحمي؛ حاول الاستخراج من نقاط توقف مختلفة |
| خلط بين المعماريات | استخدم النسخة الصحيحة: عينة x86 ← x32dbg، عينة x64 ← x64dbg |
وجهة نظر المحلل (RE Perspective)
يُستخدم x64dbg في بيئات التحليل فقط؛ وليس في بيئات الإنتاج.
توصيات للمحللين:
- اعمل دائماً داخل جهاز افتراضي (VM) معزول تماماً عن الشبكة (أو استخدم شبكة وهمية مثل InetSim).
- خذ لقطة (Snapshot) للنظام قبل التشغيل؛ واسترجعها بعد كل جلسة تحليل.
- ادمج العمل مع Process Monitor و Wireshark على الجهاز المضيف لالتقاط السلوك الكامل.
أدوات ذات صلة
| الأداة | الفرق |
|---|---|
| OllyDbg | السلف القديم، يدعم 32-بت فقط، مشروع متوقف |
| WinDbg | من شركة Microsoft؛ أفضل في تصحيح أخطاء النواة (Kernel) |
| dnSpyEx | مصحح ومفكك أكواد مخصص لـ .NET |
| Frida | أداة حقن وترميز ديناميكي دون الحاجة لمصحح كلاسيكي |