[ x64dbg ] شرح احتراف التنقيح الديناميكي ببرنامج x64dbg: إزاي تتبع الكود سطر بسطر وتصطاد نقاط التوقف؟

ديب لاب

مشـــرف
17 ديسمبر 2023
1,580
9
107
سلام الله عليكم ورحمته وبركاته إخواني وأحبابي في مجتمع نقطة التطوير

في عالم الهندسة العكسية، التحليل الساكن لوحده ممكن يدوخك لو البرنامج ضخم أو فيه حمايات معقدة. وهنا بيجي دور التنقيح الديناميكي (Dynamic Debugging)، وعشان تشتغل ديناميك باحترافية وتتبع مسار الكود في الذاكرة الحية، مفيش أفضل ولا أسهل من برنامج x64dbg مفتوح المصدر والمدعوم بأقوى الإضافات والمحدث باستمرار.

النهاردة هنتعلم الأساسيات العملية اللي هتخليك تتعامل مع x64dbg كأنك محترف من أول يوم.

1. التعرف على الشاشات الأربعة الأساسية في x64dbg
أول ما تسحب أي ملف تنفيذي وترميه داخل x64dbg، هتلاقي الشاشة اتقسمت لأربع أجزاء رئيسية لازم عينك تحفظهم:
  • نافذة الـ CPU (فوق على اليسار): ودي اللي بيظهر فيها كود الأسمبلي المباشر والعناوين والتعليمات الحالية اللي المعالج واقف عندها.
  • نافذة المسجلات Registers (فوق على اليمين): وفيها كل قيم مسجلات المعالج (RAX, RBX, RCX, RDX, RIP...) وتغيير ألوانها للأحمر معناه إن قيمتها اتعدلت في الخطوة الحالية.
  • نافذة تفريغ الذاكرة Hex Dump (تحت على اليسار): ودي الشباك اللي بتبص منه على بايتات الذاكرة في أي عنوان عشوائي (Data Segments, Strings, Buffers).
  • نافذة المكدس Stack (تحت على اليمين): بتعرض العناوين والقيم اللي مبعوتة للدوال وعناوين الرجوع (Return Addresses).

2. أسرار نقاط التوقف (Breakpoints) وأنواعها:
نقطة التوقف هي إنك تقول للـ Debugger: "شغل البرنامج بأقصى سرعته، بس أول ما توصل للعنوان ده اقف فوراً وسيبني أتحكم!". وهناك 3 أنواع أساسية:
  • نقاط التوقف البرمجية (Software Breakpoints - F2): بيتم استبدال أول بايت من التعليمة بـ INT 3 (Opcode 0xCC). ممتازة وسريعة في الكود العادي.
  • نقاط التوقف العتادية (Hardware Breakpoints): بتعتمد على مسجلات خاصة داخل المعالج نفسه (DR0-DR3). ميزتها القاتلة إنها متكشفة بصعوبة ومبتعدلش بايتات الكود، وممكن توقف البرنامج عند القراءة أو الكتابة في أي متغير في الذاكرة (Hardware on Write/Access).
  • نقاط توقف الذاكرة (Memory Breakpoints): لمراقبة قراءة أو كتابة أي صفحة كاملة في الـ RAM وتغيير صلاحياتها (PAGE_GUARD).

3. أزرار التحكم في سير التنفيذ (Execution Control):
  • F7 (Step Into): دي بتمشي خطوة واحدة للأمام، ولو التعليمة عبارة عن استدعاء دالة (CALL)، هتدخل جوا الدالة وتوريك كودها الداخلي.
  • F8 (Step Over): بتمشي خطوة واحدة، بس لو قابلت CALL بتنفذ الدالة كلها وتعدي للسطر اللي بعدها بدون ما تدخلك في دهاليزها.
  • F9 (Run): بتسيب البرنامج ينطلق في التشغيل لحد ما يخبط في أي Breakpoint إنت محددها.

4. حيلة سريعة للوصول للكود المهم (Search for Intermodular Calls):
بدل ما تضيع وسط آلاف الأسطر، اضغط كليك يمين في شاشة الـ CPU واختار Search for -> Current Module -> Intermodular Calls.
هتطلعلك قائمة بكل دوال الويندوز API اللي البرنامج بيستدعيها، زي:
  • GetWindowText / GetDlgItemText: للوصول لمكان قراءة المدخلات والباسورد.
  • MessageBoxA / MessageBoxW: للوصول لرسائل التنبيه والخطأ.
  • RegOpenKeyEx / CreateFileA: للوصول لعمليات قراءة ملفات الإعدادات ومفاتيح الريجستري.

خلاصة وتطبيق:
الـ Debugging مهارة بتحتاج تدريب وتكرار. افتح البرنامج وجرب تحط Breakpoints وتراقب المسجلات وهي بتتغير سطر بسطر.


منتظر تجاربكم وأسئلتكم في الردود، والدرس الجاي هيكون تطبيقي على عينة كاملة بإذن الله!
 

AdBlock Detected

We apologize, but you must disable AdBlock to view this site.

We rely on advertisements to support the continuity of the site and provide the best content.