فرمت Windows Portable Executable تفاوت های ظریف خاص خود را دارد، بنابراین در اینجا یک راهنمای سریع برای نحوه کار آنها آورده شده است.
Windows Portable Executable (PE) فرمت فایل بومی ویندوز برای فایل های اجرایی و دیگر انواع فایل های باینری است. فرمت فایل PE به گونهای طراحی شده است که مستقل از پلتفرم باشد، بنابراین میتوان از آن در هر دستگاه ویندوزی که نسخه سیستمعامل و معماری پردازنده مشابهی را که فایل برای آن کامپایل شده است استفاده کرد.
بنابراین، بیایید فرمت فایل Windows PE را تشریح کنیم و در مورد ساختار و اجزای تشکیل دهنده آن بیاموزیم.
فایل اجرایی قابل حمل ویندوز چیست؟
قبل از کاوش در قالب Windows Portable Executable، مهم است که اصول اولیه را روشن کنید. بیایید یک قدم به عقب برگردیم و با مفهوم اساسی Windows PE—COFF آشنا شویم.
هنگامی که کد منبع را در یک برنامه کامپایل می کنید، کامپایلر یک فایل شی (.obj) تولید می کند. این فایل شی حاوی دستورالعمل هایی برای کامپیوتر در قالب باینری است.
COFF یا Common Object File Format مجموعه استاندارد شده ای از قراردادها برای نمایش دستورالعمل های باینری است. COFF به حفظ سازگاری بین پلتفرم کمک می کند زیرا همه فرمت های فایل COFF از مجموعه قوانین و قراردادهای یکسانی برای سازماندهی کد و داده پیروی می کنند. اگرچه COFF در ابتدا برای استفاده در سیستم های *NIX توسعه داده شد، اما اکنون در همه پلتفرم ها وجود دارد.
فرمت فایل اجرایی قابل حمل ویندوز (PE) اصلاح شده ای از COFF است و برای استفاده انحصاری در سیستم های ویندوز 32 و 64 بیتی توسعه یافته است. برخلاف COFF که یک فرمت استاندارد برای فایلهای شی ارائه میکند، Windows PE یک قالب استاندارد برای فایلهای اجرایی و کتابخانهای ارائه میکند.
این شامل بخش ها و هدرهایی است که اطلاعات مربوط به فایل اجرایی مورد نظر را ارائه می دهد و به لودر سیستم کمک می کند تا داده های مربوط به فایل اجرایی را مدیریت کند. هدرها در یک فایل PE به لودر سیستم کمک می کنند تا فایل را روی حافظه ترسیم کند، وابستگی هایی مانند صادرات/واردات API را حل کند، منابع را مدیریت کند و فایل را برای اجرا آماده کند.
لینوکس نیز تکرار خاص خود را از COFF دارد. به آن فایل لینک اجرایی یا به طور خلاصه ELF باینری می گویند. با اجرای دستور file در لینوکس با نام فایل به عنوان اولین آرگومان می توانید بررسی کنید که آیا یک فایل ELF است یا نه.
ساختار یک فایل اجرایی قابل حمل ویندوز
فرمت فایل اجرایی قابل حمل از چندین جزء تشکیل شده است که هر کدام هدف خاصی دارند. این اجزا عبارتند از:
- سرصفحههای بخش، که طرحبندی و ویژگیهای هر بخش از فایل را توضیح میدهند.
- هدر PE که اطلاعاتی در مورد ساختار کلی فایل و الزامات آن ارائه می دهد.
- سربرگ DOS، که شامل یک برنامه کوچک است که هنگام اجرای فایل در سیستم DOS اجرا می شود.
- و در نهایت، هدرهای بخش PE، که موقعیت هر بخش و ویژگی های داخل فایل را توصیف می کند.
به طور کلی، این مؤلفه ها با هم کار می کنند تا یک قالب ساختاریافته ایجاد کنند که به سیستم عامل اجازه می دهد تا به درستی کدهای اجرایی موجود در فایل را بارگیری، اجرا و مدیریت کند. بیایید یاد بگیریم که هر جزء دقیقاً چه کاری انجام می دهد.
سربرگ DOS
قسمت اول یک فایل PE سربرگ DOS نام دارد. مقدار کمی کد قابل اجرا در هدر DOS ذخیره می شود که می تواند روی یک ماشین DOS نیز اجرا شود.
این کد همچنین خرد MS-DOS نامیده می شود و برای ارسال پیام خطا در سیستم هایی که فایل PE را پشتیبانی نمی کنند استفاده می شود.
سربرگ PE
سربرگ اجرایی قابل حمل اطلاعاتی در مورد فایل اجرایی می دهد، مانند حجم فایل، محل قرارگیری بخش های مختلف و منابع مورد نیاز فایل اجرایی. هدر PE همچنین اطلاعاتی در مورد نوع فایل اجرایی دارد، خواه این فایل .DLL ویندوز باشد یا EXE.
سرفصل های بخش
بخشها برای سازماندهی بسیاری از مؤلفههای یک فایل اجرایی مانند کد، دادهها و منابعی مانند رشتههای متنی، تصاویر و غیره پیادهسازی میشوند. سرصفحههای بخش شامل اطلاعات مربوط به اندازه و مکان هر بخش و همچنین هر پرچم مرتبط است.
پرچمهای مرتبط با هر هدر بخش میتوانند ویژگیهای مختلف بخش را نشان دهند، مانند قابل اجرا، نوشتن یا خواندن آن. این پرچم ها به سیستم عامل کمک می کند تا محتویات هر بخش را در حین اجرای برنامه به درستی بارگذاری و مدیریت کند.
بخش ها
خود بخش ها شامل کد، داده ها و منابع واقعی فایل اجرایی است. هر بخش با یک مرز حافظه خاص تراز شده است و مجموعه ای از ویژگی های خاص خود را دارد که بر نحوه مدیریت سیستم عامل آن تأثیر می گذارد.
اکنون همه چیز را در مورد فرمت فایل اجرایی قابل حمل ویندوز می دانید
Windows Portable Executable یک فرمت فایل قوی و همه کاره است که برای تولید طیف گسترده ای از برنامه های کاربردی ویندوز و اجزای سیستم استفاده می شود. با درک ساختار فرمت فایل PE، توسعه دهندگان می توانند برنامه های کارآمدی بسازند که از ویژگی های متمایز ویندوز بهره می برند.
علاوه بر به دست آوردن درک عمیق از پلتفرمی که برنامه شما روی آن اجرا می شود، با پیروی از چند روش استاندارد کدنویسی خوب، می توانید کیفیت برنامه را صرف نظر از پلتفرم اجرا شده به حداکثر برسانید.