Cyber Security Academy · درس

التحليل الديناميكي باستخدام GDB وpwndbg

عيّن نقاط التوقف، وافحص الذاكرة، وتتبع استدعاءات النظام، وأتمت جلسات GDB باستخدام pwndbg.

الدرس 3 من 413 خطوة

التحليل الديناميكي باستخدام GDB وpwndbg درس مجاني في Cyber Security Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Cyber Security Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Cyber Security Academy 4 دروس في المجموع.

ما التحليل الديناميكي؟

يشغّل التحليل الديناميكي ملفًا ثنائيًا ويراقب سلوكه في الوقت الفعلي: محتويات الذاكرة، وقيم السجلات، واستدعاءات النظام، واتصالات الشبكة. وهو يكمل التحليل الساكن (Ghidra) بعرض القيم الفعلية أثناء التشغيل وتدفق التحكم.

أساسيات GDB

يُعد GDB (GNU Debugger) مصحح الأخطاء القياسي في Linux:

gdb ./vuln              # load binary
gdb -p 1234             # attach to running process
run [args]              # start execution
break main              # set breakpoint at main
continue (c)            # continue execution
next (n)                # step over
step (s)                # step into

تحسين pwndbg

‏pwndbg إضافة لـ GDB تضيف أدوات مساعدة لتطوير الاستغلالات:

  • عرض مرئي للمكدس والسجلات عند كل توقف
  • توليد أنماط cyclic
  • الأمر heap لتصوير الكومة
  • أداة البحث عن gadgets rop
  • فحوصات حماية الملف الثنائي باستخدام checksec
git clone https://github.com/pwndbg/pwndbg && ./setup.sh

نقاط التوقف ونقاط المراقبة

تحكّم في التنفيذ:

# Break at address:
break *0x401234
# Break at function:
break strncpy
# Watch memory address:
watch *0x7ffd1234     # break when value changes
# Conditional break:
break *0x401234 if $rax == 0
# List and delete:
info break
delete 1

فحص الذاكرة والسجلات

فحص حالة البرنامج:

info registers         # show all registers
print $rax             # print register value
x/10xg $rsp            # examine 10 qwords at RSP
x/s 0x402000           # examine as string
x/20i $rip             # disassemble 20 instructions at RIP
pwndbg: telescope $rsp 20  # smart stack display

التنقل عبر الشيفرة خطوة بخطوة

أوامر التنقل:

ni (nexti)             # step over (instruction level)
si (stepi)             # step into (instruction level)
finish                 # run until function returns
until 0x401234         # run until address

البرمجة النصية في GDB

أتمت GDB باستخدام Python:

# GDB Python script:
gdb ./vuln << EOF
python
for i in range(10):
    gdb.execute("continue")
    gdb.execute("x/4xg $rsp")
end
EOF

تحليل الكومة باستخدام pwndbg

أوامر فحص الكومة في pwndbg:

heap                   # show all heap chunks
heap -a                # show all allocations
bin                    # show free list bins
tcachebins             # show tcache entries
vis_heap_chunks        # visual heap map

تتبّع استدعاءات النظام

استخدم strace لتتبّع استدعاءات النظام من دون تصحيح برمجي كامل:

strace ./vuln          # trace all syscalls
strace -e trace=open,read,write ./vuln  # filter syscalls
strace -f ./vuln       # follow forks
# ltrace for library calls:
ltrace ./vuln

إعداد بيئة التصحيح البرمجي

إعدادات مهمة لتطوير الاستغلالات:

# Disable ASLR for testing:
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
# Or per-process:
setarch $(uname -m) -R gdb ./vuln
# Verify with:
ldd ./vuln  # check libc base

تصحيح الملفات الثنائية المجرّدة من الرموز

تُجرَّد رموز التصحيح من كثير من الملفات الثنائية المستخدمة في الإنتاج. وتشمل التقنيات ما يلي:

  • استخدم file و readelf لفهم الملف الثنائي
  • ضع نقاط التوقف عند العناوين بدلًا من الرموز
  • استخدم تواقيع الدوال للتعرّف على استدعاءات المكتبات الشائعة
  • حمّل رموز libc بشكل منفصل إذا كانت متاحة

تحقق سريع: GDB

ما الأمر في GDB الذي يضع نقطة توقف لا تُفعّل إلا عند تحقق شرط محدد؟

مراجعة الدرس

يتيح GDB مع pwndbg إجراء التحليل الديناميكي: وضع نقاط التوقف، وفحص السجلات والذاكرة، وتتبع التنفيذ. ومن الأوامر الأساسية: break و run و ni/si و x/format و info registers. ويضيف pwndbg تصوير الكومة، واستعراض المكدس، وأدوات الأنماط. كما يتتبع strace/ltrace استدعاءات النظام واستدعاءات المكتبات من دون إعداد بيئة تصحيح برمجي كاملة.

البدء مجانًا

تعلم Cyber Security Academy مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
76
الدروس
303

الأسئلة الشائعة

هل درس «التحليل الديناميكي باستخدام GDB وpwndbg» مجاني؟

نعم — نص درس «التحليل الديناميكي باستخدام GDB وpwndbg» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Cyber Security Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Cyber Security Academy 4 دروس في المجموع.

ماذا ستتعلم في «التحليل الديناميكي باستخدام GDB وpwndbg»؟

عيّن نقاط التوقف، وافحص الذاكرة، وتتبع استدعاءات النظام، وأتمت جلسات GDB باستخدام pwndbg. تتمرن على Cyber Security Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Cyber Security Academy؟

لا تُشترط خبرة سابقة. Cyber Security Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «التحليل الديناميكي باستخدام GDB وpwndbg»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Cyber Security Academy هذا؟

نعم. كل درس في Cyber Security Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. Ghidra: التنقل في الملفات الثنائية وإضافة التعليقات التوضيحية
  2. أساسيات تجميع x86/x64 لمحللي البرمجيات العكسية
  3. التحليل الديناميكي باستخدام GDB وpwndbg
  4. إزالة التعمية وحيل مكافحة التحليل
← العودة إلى Cyber Security Academy