أداة objdump (اختصار لـ Object Dump) هي أداة سطر أوامر متقدمة وعميقة جداً تأتي بشكل افتراضي ضمن حزمة أدوات GNU Binutils في أنظمة Linux. إذا كانت أداة hexdump تعرض لك البيانات كبايتات خام، فإن objdump تذهب لخطوة أبعد بكثير: إنها تفهم بنية الملفات التنفيذية وتستطيع تحويل كود الآلة السداسي عشر (Machine Code) إلى لغة التجميع (Assembly Language) المقروءة للبشر. هذه العملية تسمى Disassembly (تفكيك الكود).

في عالم الهندسة العكسية واختبار اختراق البرمجيات (Binary Exploitation/Pwn)، تعتبر objdump هي النظارة التي ترى بها كيف يفكر المعالج (CPU) وكيف سيقوم بتنفيذ البرنامج سطرًا بسطر.

ما الفرق بين الـ Disassembler والـ Decompiler؟

تشريح وفهم مخرجات التفكيك (Disassembly Output Breakdown)

عندما تطلب من objdump تفكيك دالة معينة (مثل دالة main) داخل ملف تنفيذي، ستعطيك مخرجات تبدو كالتالي:

0000000000001149 <main>:
    1149:	55                   	push   rbp
    114a:	48 89 e5             	mov    rbp,rsp
    114d:	48 8d 3d b0 0e 00 00 	lea    rdi,[rip+0xeb0]
    1154:	e8 d7 f0 ff ff       	call   1030 <puts@plt>

لنفهم هذا الجزء بالتفصيل الممل:

أشهر خيارات ومعاملات الأداة (Command Flags)

تمتلك objdump خيارات كثيرة جداً لاستخراج تفاصيل دقيقة من ملف الـ Object File:

أمثلة عملية (Practical Examples)