تحياتي الطيبة لكل أعضاء وزوار منتدى الإبداع والتطوير ديف بوينت
لما بتتعامل مع ملف تنفيذي مشبوه أو برنامج ضخم مكتوب بـ C++، أول حاجة بتفكر فيها إنك تفكك خريطة البرنامج بالكامل وتفهم الهيكل المعماري للدوال بدون ما تعرض جهازك لخطر تشغيل ملف غير موثوق. وهنا مفيش أي أداة في العالم تقدر تنافس الأسطورة IDA Pro (Interactive DisAssembler).
في الموضوع ده، هشارك معاكم أهم الأسرار والتقنيات اللي بتخلي تحليلك على IDA سريع ودقيق ويوفر عليك ساعات طويلة من البحث.
1. وضع الرسم البياني (Graph View) وقراءة تدفق القرارات
أول ما تفتح دالة في IDA وتضغط زرار Space، هتتحول الشاشة من سطور أسمبلي متتالية إلى رسم بياني انسيابي (Control Flow Graph).
2. السحر الحقيقي مع Hex-Rays Decompiler (زرار F5)
لو إنت محلل مش عاوز تقضي وقتك كله تقرأ أسمبلي، الـ Hex-Rays Decompiler هو هديتك الكبرى. بمجرد الضغط على F5، الـ IDA بيقوم بتحليل لغة الآلة وتوليد كود شبه لغة C نقي وسهل القراءة بنسبة 85% إلى 95%.
3. البحث عن النصوص والمراجع المتقاطعة (Cross References - XREF)
واحدة من أقوى ميزات IDA هي نافذة الـ Strings (عبر الضغط على Shift + F12):
4. قوة الأتمتة مع سكربتات بايثون (IDAPython)
الـ IDA بيحتوي على بيئة Python داخلية جاهزة، تقدر تكتب بيها سكربتات تفك تشفير السلاسل النصية المشفرة (Decryption Loops)، أو تدور على أنماط معينة في البايتات، أو تعيد تسمية 1000 دالة بضغطة زر واحدة.
نصيحة ذهبية:
احتراف IDA Pro مبيجيش من القراءة النظرية بس، نزل ملفات CTF ومسابقات هندسة عكسية بسيطة وابدأ فككها وحول الطلاسم لكود مقروء.
لو عجبكم الموضوع وعاوزين جزء مخصص لسكربتات IDAPython العملية، عرفوني في التعليقات ونجهز موضوع حصري لديف بوينت!
لما بتتعامل مع ملف تنفيذي مشبوه أو برنامج ضخم مكتوب بـ C++، أول حاجة بتفكر فيها إنك تفكك خريطة البرنامج بالكامل وتفهم الهيكل المعماري للدوال بدون ما تعرض جهازك لخطر تشغيل ملف غير موثوق. وهنا مفيش أي أداة في العالم تقدر تنافس الأسطورة IDA Pro (Interactive DisAssembler).
في الموضوع ده، هشارك معاكم أهم الأسرار والتقنيات اللي بتخلي تحليلك على IDA سريع ودقيق ويوفر عليك ساعات طويلة من البحث.
1. وضع الرسم البياني (Graph View) وقراءة تدفق القرارات
أول ما تفتح دالة في IDA وتضغط زرار Space، هتتحول الشاشة من سطور أسمبلي متتالية إلى رسم بياني انسيابي (Control Flow Graph).
- الأسهم الخضراء: بتمثل المسار اللي هيتاخد لو الشرط اتحقق (Condition Met).
- الأسهم الحمراء: بتمثل المسار اللي هيتاخد لو الشرط لم يتحقق (Condition Failed).
- الأسهم الزرقاء: بتمثل الانتقال المباشر والقفزات غير الشرطية (Unconditional Jumps مثل JMP).
2. السحر الحقيقي مع Hex-Rays Decompiler (زرار F5)
لو إنت محلل مش عاوز تقضي وقتك كله تقرأ أسمبلي، الـ Hex-Rays Decompiler هو هديتك الكبرى. بمجرد الضغط على F5، الـ IDA بيقوم بتحليل لغة الآلة وتوليد كود شبه لغة C نقي وسهل القراءة بنسبة 85% إلى 95%.
- إعادة تسمية المتغيرات (N key): لما تلاقي متغير اسمه v5 أو a2، اضغط عليه N وغير اسمه لحاجة مفهومة زي user_input أو is_valid_license.
- تعديل نوع البيانات (Y key): تقدر تغير نوع المتغير من int إلى char* أو struct مخصصة، وفوراً الـ Decompiler هيصلح طريقة قراءة الحقول والبيانات في باقي الكود.
3. البحث عن النصوص والمراجع المتقاطعة (Cross References - XREF)
واحدة من أقوى ميزات IDA هي نافذة الـ Strings (عبر الضغط على Shift + F12):
- هنا بتلاقي كل النصوص ورسائل النظام وعناوين الـ URLs المضمنة في البرنامج.
- لو لقيت نص مهم (زي رابط سيرفر أو رسالة نجاح)، اضغط عليه مرتين للدخول لمكانه في الـ .data segment.
- بعدين اضغط حرف X (XREF) عشان يطلعلك قائمة بكل الأماكن في الكود اللي بتستدعي وتقرأ النص ده مباشرة! الحركة دي لوحدها بتوصلك لقلب الدالة المستهدفة في رمشة عين.
4. قوة الأتمتة مع سكربتات بايثون (IDAPython)
الـ IDA بيحتوي على بيئة Python داخلية جاهزة، تقدر تكتب بيها سكربتات تفك تشفير السلاسل النصية المشفرة (Decryption Loops)، أو تدور على أنماط معينة في البايتات، أو تعيد تسمية 1000 دالة بضغطة زر واحدة.
نصيحة ذهبية:
احتراف IDA Pro مبيجيش من القراءة النظرية بس، نزل ملفات CTF ومسابقات هندسة عكسية بسيطة وابدأ فككها وحول الطلاسم لكود مقروء.
لو عجبكم الموضوع وعاوزين جزء مخصص لسكربتات IDAPython العملية، عرفوني في التعليقات ونجهز موضوع حصري لديف بوينت!