Post

0x2. Fundamentals of Reverse Engineering

0x2. Fundamentals of Reverse Engineering

بسم الله الرحمن الرحيم.

في هذا المقال سنتعرف على العلوم الأساسية التي يجب تعلمها للبدء في عالم الهندسة العكسية. لقد قمت باستخلاص هذه المعرفة من عدة مراجع عالمية، وصغتها في شروحات وسلاسل عربية نشرتها على “شبكة شل العربية”، وسأرفقها لكم هنا مع المراجع الأصلية في نهاية كل جزئية.

بدايةً، لكل علم أساسيات لا يمكن التغاضي عنها، وتعلمها واجب لأنها ستكون نقطة الانطلاق في رحلة التمكين التي نسعى إليها بإذن الله.

كُلُّ عِلْمٍ يَقُومُ عَلَى أَرْكَانٍ.. وَأَرْكَانُ عَصْرِنَا هِيَ تِلْكَ الَّتِي تَقْبَعُ تَحْتَ قَلْعَةِ الـ 0 والـ 1.


1. البرمجة (Programming)

لتكون مطوراً أو باحثاً في هذا المجال، يجب أن تمتلك خلفية قوية في البرمجة تمكنك من فهم كيفية سير الكود (Control Flow).

وبما أننا في الهندسة العكسية سنتعامل مع البرمجيات كمستوى متوسط قريب من العتاد (Middle-Level)، يجب أن تكون لدينا خبرة بلغة C/C++، والتي تكلمت عنها في سلسلة مطولة وقمت بشرح أدق تفاصيلها.

🔗 سلسلة البرمجة بلغة C على شبكة شل

درس من سلسلة لغة C شكل (1): مقتطف من دروس البرمجة بلغة C.

  • 📚 المرجع الأساسي: C Programming Language (K&R)

2. معمارية الحاسب (Computer Architecture)

بالتأكيد لا يمكننا أن نفكك أي شيء في الحياة دون أن نفهم تصميمه وكيفية عمله. كالميكانيكي الذي يعمل على صيانة السيارات، يجب أن يكون على علم كامل بكيفية تشغيل السيارة من لحظة التشغيل (Power-on) إلى لحظة الإيقاف (Power-off).

ولذلك قمت بإعداد سلسلة تشرح كيفية عمل الحاسب بشكل تفصيلي لتكوين هذا الفهم العميق.

🔗 سلسلة معمارية الحاسب على شبكة شل

درس من سلسلة معمارية الحاسب شكل (2): مقتطف من دروس معمارية الحاسب.

  • 📚 المرجع الأساسي: Modern Computer Architecture and Organization

3. أنظمة التشغيل (OS Concepts)

نظراً لتعاملنا المباشر مع البرمجيات، يجب أن نعلم كيف يتفاعل نظام التشغيل مع العمليات (Processes)، وكيفية تنظيمه لها، وما هو دور المعالج والذاكرة في ذلك. وقد أعددت سلسلة شرحت فيها أهم الأمور التي يتوجب علينا الإلمام بها في هذا الصدد.

🔗 سلسلة مفاهيم أنظمة التشغيل على شبكة شل

درس من سلسلة أنظمة التشغيل شكل (3): مقتطف من دروس أنظمة التشغيل.

  • 📚 المرجع الأساسي: Operating System Concepts

4. الشبكات (Networking)

في ظل وجود الإنترنت، أصبح من المهم جداً أن ندرك ونعلم كيف تسير الأمور داخل الشبكات، وكيف تتواصل البرمجيات (خاصة الخبيثة منها) مع العالم الخارجي.

هذه السلسلة الرائعة من إعداد أخي ومعلمي Storm.

🔗 سلسلة أساسيات الشبكات على شبكة شل

درس من سلسلة الشبكات شكل (4): مقتطف من دروس الشبكات للأخ Storm.


5. البرمجة منخفضة المستوى (Low-Level)

أهم أمر في الهندسة العكسية هو تعلم وفهم أكواد التجميع (Assembly). لماذا؟ لأنه عند عكس أي برنامج، نحن نتعامل مع كود تنفيذي بلغة الآلة (Machine Code)، أي أنه يكون متمثلاً بالأصفار والواحدات (نظام ثنائي Binary System).

ولكن هذا الكود يمكننا تفكيكه (Disassemble) كي يظهر بلغة مقروءة وهي Assembly. ولذلك قمت بإعداد سلسلة متكاملة تخص لغة x86 Assembly.

🔗 سلسلة لغة x86 Assembly على شبكة شل

درس من سلسلة لغة التجميع شكل (5): مقتطف من دروس لغة التجميع x86.

  • 📚 المرجع الأساسي: Assembly Language for x86 Processors

خاتمة

لأكون صادقاً معك، بعد الانتهاء من دراسة هذه الأمور، لن أقول لك أنك ستكون قد بنيت أساساً قوياً بنسبة 100%.

العلم بحر واسع، وكلما شربنا منه لا نرتوي. ولكن، إن شاء الله، بإنهاء هذه السلاسل ستكون قد أتممت 90% من المعرفة التأسيسية التي تتوجب عليك للبدء بقوة في هذا المجال.

This post is licensed under CC BY 4.0 by the author.