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

IDA Pro / IDA Free

الأداة القياسية والأكثر دقة في عالم الهندسة العكسية، تتميز بسرعتها الفائقة في تحليل الأكواد الضخمة ودعمها الواسع للمعالجات.

دفاعLinuxmacOSWindows
hex-rays.com/ida-pro

دليل IDA Pro / IDA Free — الدليل الشامل للمهندسين العكسيين

يُعد IDA (Interactive Disassembler) من شركة Hex-Rays المعيار الصناعي والاحترافي في مجال الهندسة العكسية للملفات الثنائية (Binary Reverse Engineering). تتوفر نسخة IDA Free مجاناً بدون مُعيد بناء كود (Decompiler)، بينما تضيف نسخ IDA Home / Pro معيد بناء الكود Hex-Rays، ومصحح أخطاء (Debugger)، ودعماً أوسع لمختلف المعماريات.

الإصدارات (Editions)

الإصدارالتكلفةمعيد بناء الكود (Decompiler)المعماريات المدعومة
Free$0لا يوجدx86 / x64
Home$365 سنويًانعم (معمارية واحدة)x86 / x64 / ARM
Pro$4–10k+نعم (الكل)جميع المعماريات المدعومة

في معظم المهام الاحترافية التي تتطلب استخدام Hex-Rays، يُعتبر إصدار Pro ضرورياً.

تحميل الملف الثنائي (Loading a binary)

  1. سحب الملف وإفلاته داخل IDA ← سيتعرف المحلل تلقائياً على النوع (PE, ELF, Mach-O, COFF, IntelHEX, raw, …).
  2. نافذة خيارات المحلل (Loader options) — عادة ما نضغط OK.
  3. يبدأ التحليل التلقائي (Auto-analysis) ويستغرق من ثوانٍ إلى دقائق حسب حجم الملف.

الواجهة الافتراضية (Layout)

اللوحةالغرض
IDA View-Aوضع المخطط الانسيابي (Graph mode) — اضغط Space للتحول للوضع النصي
Hex Viewعرض الملف بنظام الستة عشر (Hex)
Stringsجميع النصوص المستخرجة من الملف
Imports / Exportsالدوال المستوردة والمصدرة
Functionsقائمة الدوال الموجودة في الملف
Structures / Local Typesمحرر الأنواع والبيانات الهيكلية
Outputسجل العمليات (Log)
Pseudocode (F5)الكود المصدري المعاد بناؤه (عبر Hex-Rays)

اختصارات لوحة المفاتيح الأساسية

المفتاحالإجراء
Tabالتنقّل بين لغة التجميع (ASM) والكود المُعاد بناؤه
F5إعادة بناء الكود للدالة الحالية (Decompile)
Nإعادة تسمية (دالة، متغير، عنوان)
Yتحديد النوع (Set type)
;إضافة تعليق
:إضافة تعليق متكرر
Gالانتقال إلى عنوان محدد
Hالتحويل بين النظام الست عشري والعشري
Xعرض المراجع المتصالبة (Cross references) للرمز الحالي
Ctrl+Eتحديد نقطة الدخول (Entry point)
Oتحويل البايت إلى إزاحة (Offset)
Dتحويل البايت إلى بيانات (Data)
Cتحويل البايت إلى كود (Code)
Uإلغاء التعريف (Undefine)
Alt+Pتعديل خصائص الدالة
Ctrl+Sحفظ قاعدة البيانات IDB (ينصح به باستمرار)
Ctrl+Lمدير تواقيع المكتبات (FLIRT)

سير عمل الكود المعاد بناؤه (Hex-Rays Workflow)

c
int __cdecl encrypt(char *data, int len) {
    int v3; // edx
    char v4; // dl
    // انقر بزر الفأرة الأيمن ← Edit function: لإعادة التسمية وتحديد نوع القيمة المعادة
    // اضغط Y على `len` ← لتغيير النوع إلى size_t
    // اضغط `/` لإضافة تعليق على السطر
    // اضغط F2 في وضع الكود المعاد بناؤه: لتعيين نقطة توقف (Break point) عند التصحيح
    ...
}

استخدم Ctrl+→ / Ctrl+← للتنقل في تاريخ القفزات. انقر بزر الفأرة الأيمن واختر Show pseudocode for ALL لإعادة بناء الكود للملف كاملاً في تبويبات متعددة.

تواقيع FLIRT — التعرف على دوال المكتبات

يأتي IDA مزوداً بتواقيع FLIRT signatures لمكتبات شهيرة مثل libc وMSVCRT وOpenSSL. تقوم هذه الميزة بإعادة تسمية دوال المكتبات تلقائياً عند التحميل. لإنشاء تواقيع مخصصة:

$ sigmake -nfunctions.pat libfoo.sig
# التحميل عبر File → Load file → IDS file

البرمجة والتطوير (Pro)

يدعم IDA لغتين للبرمجة النصية:

  • IDC — لغة الماكرو الأصلية في IDA (تشبه C).
  • IDAPython — مكتبة ربط للغة Python 3.
python
# مثال IDAPython — سرد جميع عمليات الاستدعاء لـ malloc
import idautils, idc, idaapi
malloc = idc.get_name_ea_simple("malloc")
for ref in idautils.CodeRefsTo(malloc, 0):
    print(hex(ref), idc.GetDisasm(ref))

إضافات (Plugins) ينصح بها

  • HexRaysCodeXplorer — تحسين التنقل في الكود المعاد بناؤه.
  • Lighthouse — تغطية الكود (Code coverage) عبر تتبع DynamoRIO / PIN.
  • Diaphora — مقارنة الملفات الثنائية (Binary diffing).
  • Capa explorer — قواعد Mandiant لاكتشاف قدرات الملف الثنائي.
  • ret-sync — مزامنة مؤشر IDA مع x64dbg / gdb / windbg.
  • IDArling — العمل الجماعي لعدة مستخدمين على نفس الملف.

مصحح الأخطاء (Debugger)

يتضمن إصدار Pro مصحح أخطاء محلي (x64 / x86 / ARM)، وعن بُعد عبر ida-server أو windbg-remote.

الإجراءالاختصار
تشغيل (Run)F9
الخطوة التالية للداخل (Step into)F7
الخطوة التالية للأعلى (Step over)F8
تشغيل حتى المؤشرF4
تعيين نقطة توقفF2

سير العمل عند تحليل عينة برمجية خبيثة (Malware)

  1. سحب الملف وقبول الإعدادات الافتراضية.
  2. تبويب النصوص (Strings) — ملاحظة روابط URL، مسارات الملفات، وأسماء الـ Mutex.
  3. الموارد المستوردة (Imports) — فحص دوال مثل CryptEncrypt وWriteProcessMemory وCreateRemoteThread.
  4. البحث عن الدوال الرئيسية مثل main أو WinMain أو DllMain.
  5. اضغط F5 لإعادة بناء الكود، وحلل الدوال من الأعلى إلى الأسفل.
  6. أعد التسمية وحدد الأنواع كلما فهمت جزءاً من الكود؛ لتتحول قاعدة بيانات IDB إلى مستند توثيقي.
  7. شغل Capa Explorer: لتصنيف الدوال حسب قدراتها (مثل "اتصال HTTP" أو "تشفير بيانات").
  8. تصحيح الأخطاء (Debugging) اختيارياً في بيئة معزولة ومتحكم بها.

المشكلات الشائعة وحلولها (Bad output / fixes)

العرضالحل
دالة غير محللة (تظهر علامة استفهام حمراء ?)اضغط P عند بداية الدالة، أو D لتعريفها كبيانات ثم C لتحويلها لكود
الكود المعاد بناؤه غير منطقيخطأ في نوع القيمة المعادة أو اتفاقية الاستدعاء (Calling convention)؛ استخدم Y لتصحيح التوقيع
ميزة FLIRT لم تعمللا يوجد توقيع مطابق؛ قم ببناء واحد أو استخدم lumina (بحث سحابي لإصدار Pro)
الأسماء المستوردة تظهر كأرقام فقط (Ordinals)طبق قاعدة بيانات الـ API عبر File → Load file → Type Library

منظور المحلل والدفاع

يُعد IDA المعيار الذهبي لمختبرات تحليل البرمجيات الخبيثة. يُفضل استخدامه بجانب:

  • صناديق الرمل (Sandboxes) مثل ANY.RUN للتحليل الديناميكي.
  • أداة Capa لاكتشاف القدرات الثابتة.
  • قواعد YARA لتعريف مؤشرات الاختراق (IOCs).

الأمن العملياتي (OPSEC)

  • رخصة IDA Pro شخصية لكل مستخدم — هناك اعتبارات قانونية حسب نطاق العمل.
  • لا ترسل عينات برمجيات خبيثة حساسة إلى "Lumina" إذا كان نطاق المهمة يمنع الرفع السحابي.

أدوات ذات صلة

الأداةالفرق الجوهري
Ghidraالبديل المجاني المفتوح من وكالة الأمن القومي (NSA) — سير عمل مشابه وممتاز
Binary Ninjaواجهة أحدث، قابلة للبرمجة بسهولة، وسعر متوسط
radare2 / Cutterمفتوح المصدر، يركز على واجهة السطر الأوامر
angrللتنفيذ الرمزي (Symbolic execution) برمجياً
BinDiffمقارنة الملفات الثنائية (مجاني من Google)