
- بواسطة x32x01 ||
يعني إيه Reverse Engineering (الهندسة العكسية) باختصار؟
الـ Reverse Engineering أو اللي هنقول عليها اختصارًا RE، ببساطة هي عملية تفكيك حاجة موجودة علشان نفهمها ونطلع "السر" وراها - سواء كانت حاجة مادية زي محرك، أو حاجة برمجية. في عالم السوفتوير، الفكرة إنك توصل للـ binary أو القلب بتاع البرنامج علشان تقدر تعمل عليه حاجة من التلات حاجات الأساسية: Comprehension, Decomposition, Reconstruction.الثلاث مبادئ الأساسية في الـ RE
1. Comprehension - الفهم
إنك تجمع كل المعلومات اللي تقدر عنها: إزاي البرنامج بيشتغل، إيه الـ mechanisms اللي بتحكم سلوكه، وإيه الـ inputs/outputs المتوقعة.2. Decomposition - التفكيك الهيكلي
تنزل جوة الكود: تشوف الـ structures، الـ subsystems، الـ functions، وتبني خرائط للـ call-trees والـ control flow.3. Reconstruction - إعادة البناء
بعد ما تفهم وتفك، تقدر تعدّل أو تعيد بناء جزء من البرنامج - يعني ممكن تطور نسخة مخصصة أو تصلّح حاجة من غير ما تبدأ مشروع من الصفر.سؤال مهم: ليه نستخدم الـ RE؟ (استخداماته)
الـ RE ليه استخدامات مفيدة legit، لكن برضه ممكن يُسئ استخدامه. من الاستخدامات المهمة:- Modding (تعديل الموارد): تغيير الأيقونات، قوائم الواجهة، أو مظهر البرنامج.
- CFB - Control Flow Bypass: ده مفهوم تقني لتغيير مسار تنفيذ البرنامج - له تطبيقات شرعية (اختبار) وغير شرعية (cracking).
- Code Caving / Injection: كتابة كود بيدخل داخل عملية شغالة علشان تضيف وظائف أو تختبر سلوك الذاكرة - يُستخدم في التجارب الأمنية والأبحاث.
الأدوات الأساسية اللي بتحتاجها في الـ RE
فيه أربع أدوات أساسية أي واحد يبدأ فيها:- Hex Editor: بيعرضلك الملف في شكل سداسي (hex) علشان تقدر تشوف البايتات وتعدّلها.
- Disassembler: يحول البايتات لـ Assembly علشان تبقى مقروءة تقنيًا.
- Debugger: أداة تشغّل البرنامج خطوة خطوة في الRuntime، تحط breakpoints وتشوف القيم في الذاكرة.
- Resource Editor: بتعدل الواجهات، الأيقونات، القوائم… إلخ.
خطوات عملية ومُنطقية للبدء في RE (مفهومياً)
- Background checks - شوف اللغة اللي اتكتب بيها البرنامج، الـ packer لو الملف مضغوط، والمكتبات المستخدمة.
- تحدد منهجية العمل - إيه اللي هتعمله: تحليل ثابت (Static Analysis) ولا ديناميكي (Dynamic Analysis)؟
- تستخدم أدوات المراقبة - تشغيل البرنامج في بيئة معزولة (VM) ومراقبة السلوك (ملفات، registry، اتصالات شبكة).
- تفكيك/تفحص الكود - تستخدم disassembler أو decompiler لفهم البنية الأساسية.
- تصحيح وفحص أثناء التشغيل - عن طريق debugger تجرّب نقاط توقف وتتابع الـ control flows.
هل كل برنامج ممكن يتعكس ويـتـكسر؟ مش بالسهولة دي!
فيه دفاعات وحواجز فعّالة ضد الـ RE ومنها:- Obfuscation: تشويش الكود علشان يبقى صعب القراءة أو التحليل (مثلاً أسماء دوال مش مفهومة، بنى معقّدة).
- Self-Debugging: برامج بتعمل حماية ذاتية عن طريق توليد عمليات تتحقق لو فيه debugger خارجي — فالمحلل يلاقي صعوبة في تعقب التنفيذ.
- Packing/Encryption: ضغط أو تشفير الملف التنفيذي بحيث محتواه مش ظاهر إلا بعد فك الضغط الديناميكي.
أخلاقيًا وقانونيًا: لازم نكون واضحين
- الهندسة العكسية في سياق البحث الأمني والتعليم أو بعد إذن صاحب البرنامج مقبولة ومفيدة.
- استخدامها في اختراق، سرقة حقوق ملكية، أو توزيع كراكات مخالف للقانون والأخلاق.
- لو هتتعلم RE، اشتغل على برمجيات مفتوحة المصدر أو على بيئة اختبارية (VM) وابتعد عن برامج الطرف الثالث من غير إذن.
خلاصة سريعة
- RE أداة قوية للفهم، التصليح، والتحليل الأمني.
- ليها مميزات كبيرة في التعلم وتحليل البرمجيات الضارة، لكنها كمان ممكن تُستخدم بطرق ضارة لوحدها.
- مهم تستخدم أدوات الحماية الأخلاقيّة، وتراعي الجانب القانوني قبل ما تبدأ تحليل أي برنامج.
التعديل الأخير: