السلام عليكم ورحمة الله وبركاته
بسم الله الرحمن الرحيم بداية انا طالب علم بخبرة متواضعة في المجال ولكن احاول الإفادة ،اتقبل النقاش والنقد وان اخطأت فمن نفسي والشيطان وإن أصبت فمن الله على بركة الله.
ان شاء الله هذه المقالات ستكون شاملة بالامور الاساسية وسوف تكون متوسعة بالامور الهامة فقط لمجال الهندسة العكسية (Reverse Engineering) التي تخص لغة C.
المراحل التي يمر بها كود لغة C
اولاً يكون لدينا الكود المصدر (Source Code) وهو الذي يكون بامتداد '.c' والذي يكون فيه الكود الذي قمنا بكتابته
حسنا هذا الكود يمر بمراحل قبل أن ينفذ ومن المهم جداً ان نعلم هذه المراحل :
1. المعالجة المسبقة التي تعرف (Preprocessor) وهذه المرحلة يتم فيها عدة خطوات من أهمها :
- إزالة التعليقات
- توسيع وحدات الماكرو
- توسيع الملفات المضمنة
2. المترجم (Compiler) :
تقوم هذه المرحلة بتحويل الكود إلى لغة التجميع 'Assembly' ويكون الملف بامتداد '.s'
3. المجمع (Assembler) :
بهذه المرحلة يقوم المجمع بتحويل كود لغة التجميع إلى لغة الآلة والتي هي تكون عبارة عن صفار وواحدات (0, 1)
ويكون الملف بامتداد '.o'
4. الرابط (Linker) :
هذه المرحلة يتم فيها ربط جميع استدعاءات الوظائف بتعريفاتها
نهايةً يكون الملف قابل للتنفيذ بامتداد '.exe'
من المهم كتير تتعلم كيف بتطبق هي الخطوات يدويا وتعمل نظرة عالكود كيف بيتغير من مرحلة لمرحلة
هاد الرابط بيشرح كيف بتعمل هي الخطوات على لينيكس