اعرف اللي قصادك. احمي أرضك.

x64dbg

منقح برمجيات (Debugger) حديث ومفتوح المصدر لأنظمة Windows، صمم لتبسيط عملية التحليل الديناميكي وفك الحماية عن الملفات.

دفاعمفتوحة المصدرWindows
x64dbg.com

دليل x64dbg الشامل

يُعد x64dbg مصحح الأخطاء (Debugger) المفتوح المصدر والمفضل لنظام Windows عند تحليل البرمجيات الخبيثة (Malware Analysis). يتميز بواجهة رسومية أصلية لـ Win32، وقابلية للبرمجة النصية (Scriptable)، مع أداة شقيقة x32dbg مخصصة للبرامج بمعمارية 32 بت. نظام الإضافات (Plugins) المتطور فيه (مثل Scylla و ScyllaHide) يجعله الأداة الأساسية لفك التغليف (Unpacking) والتصحيح السلوكي.

التثبيت

# نسخة محمولة؛ فقط قم بفك الضغط
$ https://github.com/x64dbg/x64dbg/releases

قم بتشغيل 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)

  1. افتح العينة في x64dbg ← سيتوقف تلقائياً عند TLS callbacks أو نقطة الدخول (EP).
  2. تأكد من تفعيل ScyllaHide بالملف التعريفي الافتراضي.
  3. ابحث عن نقطة الدخول الأصلية (OEP) عبر:
    • وضع نقاط توقف على bp VirtualAlloc أو bp VirtualProtect.
    • وضع نقاط توقف "كتابة وتنفيذ" على مناطق الذاكرة (Heap).
    • البحث عن "القفزة النهائية" (Tail Jump) التي تعيد التنفيذ إلى قسم .text الأصلي.
  4. عند الوصول لـ OEP ← استخدم Scylla ← بحث IAT ← ملء المستوردات (Fill imports) ← Dump.
  5. افتح ملف الـ 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أداة حقن وترميز ديناميكي دون الحاجة لمصحح كلاسيكي