ملف .EXE

ملف .EXE

هل تساءلت يوما ماذا يوجد داخل ملفات .exe الموجودة بجهازك؟،سواء كانت ملفات لعبة او برنامج معين؟ نعم من الواضح أنه مصنوع من البيانات ولكن دعونا نفهم ما تعنيه هذه البيانات وماذاتعني أسرار exe للمبرمجين اليوم

إذا فتحت ملف نصي عادي بامتداد .txt في محرر ملفات Hexadecimal (سداسي عشري). ستشاهد أن المف النصي هذا في الاساس عبارة عن ترميز رقمي للتعبير عن تلك الحروف، ممكن ان يكون ترميز حديث مثل UTF-8 او قديم مثل ASCII أو أي شيء آخر (راجع مقالة سبب ظهور الخطوط بالعربية مقلوبة بالبرامج).

صورة ملف نصي باللغة العربية مرمز بلغة الآلة

ملف نصي باللغة العربية مرمز بلغة الآلة

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

لكن إدا فتحنا ملف صورة PNG، سيصبح الأمر أكثر تعقيدًا، فسترى رأس ملف، متبوعًا في الغالب ببيانات لجميع وحدات البكسل في الصورة، إدا جميع الملفات الموجود بحهاز الكمبيوتر عندك، ليست إلا مجموعة من البيانات التي يتم تفسيرها بواسطة أجزاء مختلفة من البرامج ليكون لها معنى. وحتى البرنامج بامتداد exe نفسه ليس إلا مجموعة بيانات.

لذا فإن ما يوجد داخل ملفات exe هو عبارة عن رأس الملف File Header، وتوجد به مجموعة من أكود لغة الآلة.
كذلك فأن الكثير من البرمجة الحديثة تكون مكتوبة بلغة عالية المستوى مثل لغة C على سبيل المثال، وللحصول على ملف قابل للتنفيذ وتشغيل كود c عمليا. يجب عليه أولاً أن يحول الى لغة التجميع، ثم رمز الكائن يشار إليه أحيانًا كرمز للآلة ومن ثم تشغيله من خلال رابط link للوصول إلى الملف النهائي القابل للتنفيذ.

لماذا نحتاج ملفات exe

معالجات الكمبيوتر والموبايل تتحدث لغة واحدة فقط ،يتم التعبير رموز لغة الآلة (الأصفار والآحاد) لكن البشر لا يتحدثون هذه اللغة، إذا بدلاً من أن نمضي ثماني سنوات لتعلم لغة الآلة في الجامعة، قام العملماء في الماضي، ببناء برنامج يأخذ نصوصًا مكتوبة بقواعد معينة تدعى لغات البرمجة، ثم نترجم إلى شيء يمكن للكمبيوتر فهمه.

لذا تم حل اللغز ولكن كل exe مختلف قليلاً ، انظر مرة أخرى في أيام Dos.الأحرف m z في البداية،
لذا لا يمكنك الخلط بينه وبين ملف تنفيذي جديد 16 بت من Windows 1.0 لعام 1985 والذي تم تمييزه بالأحرف n e في البداية wi إصدار OS2 2.0 في عام 1992 ، تم إصدار LX الجديد القابل للتنفيذ الخطي 32 بت والمختلط 16 ملف تنفيذي خطي 32 بت Le
ثم بدأت exes أخيرًا في إثارة الاهتمام في عام 1993 عندما أصدرت Microsoft Windows NT الآن يسمى تنسيق exe 32- بت قابل للتنفيذ،
يبدأ رأس الملف بـ PE متبوعًا ببايتين فارغين ، وقد استغرق الأمر عشر سنوات حتى يتمكنوا من التوصل إلى هذا واحد،
لكن هذه ليست حتى البداية الحقيقية لملف exe بعد الآن ، كل exe من الآن فصاعدًا يحتوي على 16 حقيقيًا.
-برنامجbit dos الذي يخرج النص لا يمكن تشغيل هذا البرنامج في وضع DOS ، نعم ، Windows هو مجرد
Dos في جوهره ، وإذا فتحت أي exe عشوائي في محرر سداسي عشري ، فهناك MZ وهو تنسيق Dos الذي لا يمكن لهذا البرنامج تشغيله في وضع DOS
ثم أقل من ذلك مع pe00 حيث ستبدأ النوافذ الحديثة في قراءة البرنامج من تنسيق PE وهو أيضًا أول Windows قابل للتنفيذ يتضمن معمارية ثنائيات،وهي المكتبة أو البرنامج الذي يحتوي على مجموعة تعليمات متعددة التي تعمل على
أنواع مختلفة من المعالجات، هذا أمر شائع إلى حد ما إن لم يكن ممارسة قياسية لمعظم أنواع الملفات التنفيذية عبر جميع أنظمة التشغيل في الوقت الحاضر،
هذه هي الطريقة التي يتم بها نقل هذه الملفات التنفيذية من خلال وجود تعليمات مختلفة جاهزة لمعالجات،
فكر في الأمر مثل القيام برحلة إلى أوروبا الخاصة بك سوف تتجول بشكل أسرع من خلال التحدث دائمًا باللغة الأصلية لأي بلد تصادف أن تجد نفسك فيه، يريد المبرمجون أن تكون أجهزة الكمبيوتر أسرع ما يمكن حتى يتم تجهيز exe
بقاموس سمين لمساعدته على التواصل بغض النظر عن المكان الذي يجد فيه في حد ذاته.
لذا إذا كان الجزء الأكبر من exe عبارة عن مجموعة من كود الآلة ، فهذا يعني أنه يمكن إنشاء exes عن طريق كتابة كود الآلة مباشرة إلى ملف من الناحية النظرية، وأنا أقول هنا نظريًا لأنه لا يزال هناك فرق كبير من لغة عالية المستوى و تتذكر النتيجة النهائية أن كود آلة التجميع قم بربطها ثم قم بتشغيلها لكن الناس يكتبون البرامج مباشرة في التجميع لذلك قد يكون من الممكن بلي لتخطي كل تلك الخطوات المذكورة أعلاه وكتابة تعليمات وحدة المعالجة المركزية الثنائية داخل ملف واستدعاء ذلك exe،
ولكن لاختبار ذلك ، يجب أن أكتب برنامجًا في كود الآلة لمعالج حديث وأنا لا أفعل ذلك تعرف على تجميع 64 بت ، لذلك لا أعتقد أنني سأفوز ، لذا كان علي أولاً التعرف على تجميع x64 واتضح أن الكثير من الموارد عبر الإنترنت لم تعد موثوقة بعد الآن ، وقد نقلت Microsoft بعض الأشياء في في السنوات القليلة الماضية ، لكنني تمكنت في النهاية من
ضبط Visual Studio على الإعدادات الصحيحة لتشغيل برنامج التجميع الخاص بي كمرجع ،
هذا مشروع سي++ فارغ لا يحتوي على أي c + فيه الآن وقد أوضح مبرمجون أفضل مني خصوصيات وعموميات تصميم وحدة المعالجة المركزية الحديثة وكيف يعمل التجميع ،
لذا لن أتطرق إلى كل ما سأكتبه ببساطة لبرنامج اختبار صغير يضيف رقمين معًا ثم فتح الملف النهائي لمعرفة ما إذا كان فلنلقِ نظرة على هذا EXE ، ما هو حجم 46 كيلوبايت التي تبدو وكأنها الكثير من البيانات ، ما عليك سوى إضافة
رقمين معًا للحصول على بعض المنظور حول رمز التجميع الرئيسي.

ما هو موجود في ملف exe هذا

يبدأ ملف exe برأس نموذجي لا يمكن تشغيل هذا البرنامج في وضع DOS ثم مجموعة كاملة من التعليمات البرمجية والبيانات الأخرى التي لم أكتبها باستثناء جزء صغير جدًا من هذا ، فما هو كما ذكرت من قبل،
يمكن أن تكون تعليمات ثنائية للمعمارية أنواع أخرى من ،لكنني أستهدف على وجه التحديد معالجات x64 ،
لذا ربما لا يوجدالكثير من بيانات الحشو الفارغة هنا على ما يبدو ومن خلال إجراء بحث سريع يمكنني العثور عليه بالفعل رمز ر القبعة التي كتبتها هنا ،يبلغ طولها بضع بايتات فقط وهذا يعني 2.5 كيلو تقريبًا في البرنامج
أيضًا وكل هذه الأشياء الأخرى أعتقد أنها مجرد مجموعة من عناصر Windows وليست عناصر نافذة Windows إذا قمت بإيقاف البرنامج مؤقتًا في منتصف التنفيذ Visual Studio بعد ذلك يمكنني الانتقال إلى تصحيح أخطاء النوافذ ثم الانتقال إلى التفكيك حيث يمكنني التحقق من نسخة مفككة من الكود الخاص بي وما هذه مجموعة كاملة من التعليمات البرمجية التي تنشئ نافذة وحدة التحكم
وتضع كل شيء لي لماذا هو هنا جيدًا هذا ما طلبت من Linker القيام به ، لدي النظام الفرعي الذي تم ضبطه على وضع وحدة التحكم، وبالتالي فهو يعطيني وحدة تحكم كلما تعلمت أكثر عن هذه العمليات ذات المستوى المنخفض المزعومة ، كلما زاد التجريد الذي أجده في التجميع قد يشعر بمستوى منخفض ولكنه بعيدًا عن برمجة Altair 8800 حيث يمكنهم إدخال كل بايت من البرنامج فعليًا واحدًا تلو الآخر ، لذلك بينمانعم ،
يمكن للأشخاص كتابة البرامج في رمز الآلة وصفع DOT Exe على هذا الملف ، لا أعتقد ذلك على الإطلاق سوف e في أي وقت قريب ، فلماذا حتى لديك ملفات تنفيذية لا تنتقل مباشرة من الكود إلى أجهزة الكمبيوتر التي تشغل برنامجك جيدًا في بعض الأحيان ، فهي تعمل بهذه الطريقة ، Python هي مثال كلاسيكي للغة لم يتم تجميعها مسبقًا قبل التشغيل ولكن منذ لا تتحدث وحدة المعالجة المركزية أي لغة إلى جانب الآلة ، فهي عالقة في الترجمة في الوقت الفعلي جملة بجملة وهي أبطأ بكثير من معرفة كل ما تريد قوله مسبقًا ،
كل ذلك مجمعة في ملف جيد آخر ، ومن مزايا الملف القابل للتنفيذ هو الانصهار من التعليمات البرمجية إذا كان كل شيء مكتوبًا بنص سهل القراءة ، فإن كل شخص من عملائك إلى Rivals يقرأ بالضبط كيف نجحت في التنفيذ

بعض خدعة البرمجة ولا يوجد الكثير مما قد يمنعهم من سحب Ctrl C Ctrl V القديم عليك وتمريرها على أنها خاصة بهم من حيث السرعة والتحكم، نعم ، يمكن أن تجعل كتابة كود التجميع برنامجك أسرع، لكني أكره أن أقول إن أجهزة الكمبيوتر سريعة جدًا اليوم لدرجة أنها ليست كلها يجب تحسين g إلى الدرجةالتاسعة،
حيث يتيح تجريد أنواع البيانات وبناء الجملة الخاص الذي توفره لغات compad للمبرمجين القيام بأكثر مما هو ممكن
في كود الآلة أو حتى تجميع الأجهزة في واجهة المستخدم الرسومية القراءة والكتابة أصبحت الشبكات السريعة أسهل بكثير كلما ابتعدت عن المعدن الخام ،

الخلاصة

إن ما يوجد في داخل ملفات exe هو عقود من التطوير والابتكار ، وهو نتيجة نهائية لتحويل منطق البشر إلى منطق الكمبيوتر، من خلال مجموعة مختلفة من مستويات متعددة من التجريد، الذي هو عبارة عن مجموعة كاملة من تعليمات المعالج التي لا يُسمح لها بالتشغيل في وضع DOS يفعلها الجميع الآن.


كتابة Mostafa Suleiman

مصطفى سليمان خريج تقنية معلومات أكتب في المجال التقني من 10 سنوات تقريباً، هوايتي القرائة ومتابعة الاخبار عامة والاخبار التقنية خاصة