أولاً: أدوات التحليل الساكن (الملف مغلق / ميت)
تستخدم هذه الأدوات كخطوة أولى دائماً لاستطلاع الملف دون تشغيله، لتجنب أي خطر ومعرفة طبيعته.
strings
- الاستخدام باختصار: استخراج الكلمات والنصوص المقروءة المختبئة داخل بايتات الملف.
- امتى أستخدمها / لما ألاقي إيه؟
- استخدمها أول ما يستلم ملف غامض كخطوة استكشافية أولى (Reconnaissance).
- استخدمها لما تكون بتدور على بيانات حساسة مكتوبة مباشرة في الكود (Hardcoded) مثل: باسوورد افتراضي، عنوان سيرفر للمخترقين (C2 IP)، مفتاح تشفير (API Key)، أو مسارات ملفات برمجية (Paths).
hexdump
- الاستخدام باختصار: عرض بايتات الملف الخام كاملة بصيغة الستة عشري (Hex).
- امتى أستخدمها / لما ألاقي إيه؟
- لما تشك إن امتداد الملف تم تزويره (مثلاً ملف اسمه
invoice.pdf لكنه مش بيفتح)، فتستخدم hexdump لفحص أول بضعة بايتات وتتحقق من البايتات السحرية (Magic Bytes) لمعرفة نوع الملف الحقيقي.
- لما تكون شغال على ثغرة وتريد التأكد من أن الـ Payload أو الـ Shellcode تم حفظه داخل الملف بشكل سليم وبدون تشوهات أو بايتات سيئة (Bad Characters مثل
0x00).
objdump
- الاستخدام باختصار: أداة سريعة جداً لتحويل كود الآلة إلى لغة تجميع (Disassembly) من سطر الأوامر مباشرة.
- امتى أستخدمها / لما ألاقي إيه؟
- لما تكون عايز تفحص دالة معينة بسرعة (مثل دالة
main أو دالة validate) في ملف صغير، دون الحاجة لفتح برامج رسومية ثقيلة تأخذ وقتاً في التحميل.
- لما تكون بتدور على عناوين جداول الربط مثل الـ PLT (Procedure Linkage Table) لتجهيز هجوم واستغلال ثغرات الـ Buffer Overflow.
ghidra
- الاستخدام باختصار: الوحش الكاسر لتحويل الـ Assembly المعقد إلى كود شبيه بلغة C المفهومة (Decompiler).
- امتى أستخدمها / لما ألاقي إيه؟
- لما تلاقي الملف كبير، معقد، ومليء بالشروط (
if/else) والحلقات التكرارية (loops) الصعبة القراءة بلغة الـ Assembly.
- تفتحها لما يكون هدفك فهم المنطق البرمجي (Program Logic) بالكامل وتتبع تدفق البيانات بدقة لبناء سيناريو اختراق محكم
ثانياً: أدوات التحليل الديناميكي السطحي (مراقبة من الخارج)
تستخدم هذه الأدوات عند تشغيل البرنامج في بيئة آمنة (Sandbox) لمراقبة تصرفاته وتفاعله مع النظام دون الدخول في تفاصيل الكود الداخلية.
strace
- الاستخدام باختصار: مراقبة وتوثيق نداءات النظام (System Calls) التي يطلبها البرنامج من النواة (Kernel).
- امتى أستخدمها / لما ألاقي إيه؟
- لما تلاقي البرنامج بيعمل عمليات مشبوهة متعلقة بالنظام، وتريد معرفة: أي ملف بيفتحه بالظبط؟ هل بيعدل في الـ Registry أو ملفات الحماية؟ هل بيفتح اتصال شبكي (Socket) ومع أنهي IP؟
- لما تشغل البرنامج ويقفل فجأة بدون ما يطبع أي خطأ على الشاشة؛
strace هتقولك انهار عند أنهي نداء نظام بالظبط (مثل فشل في فتح ملف معين ENOENT).
ltrace