Parsi Coders
ساختار فايل EXE - نسخه قابل چاپ

+- Parsi Coders (http://parsicoders.com)
+-- انجمن: Software Development Programming (http://parsicoders.com/forumdisplay.php?fid=37)
+--- انجمن: Other (http://parsicoders.com/forumdisplay.php?fid=85)
+--- موضوع: ساختار فايل EXE (/showthread.php?tid=1123)



ساختار فايل EXE - Amin_Mansouri - 10-20-2011

فايلهای اجرايی (EXE) تحت ويندوز با يک قطعه ۵۱۲ بايتی بنام هدر (Header ) شروع ميشن که از اين ۵۱۲ بايت فقط ۲۷ بايت اول مورد استفاده قرار ميگيره که در جدول زير قسمتهای مختلف اين ۲۷ بايت رو ميبينيد :

[عکس: rt0kdj55tsnpj60kw36d.jpg]

همونطور که ميبينيد اين ۲۷ بايت به ۱۴ بخش تقسيم ميشن که باز از اين ۱۴ بخش ۷ بخش مهم تر هستند و معمولا اگر فايل اجرايی آلوده به ويروس بشه اين بخش ها تغيير ميکنن و اگر ويروس از فايل پاک بشه بايد اين بخشها به حالت اصلی خودشون برگردند تا فايل به درستی اجرا بشه.
اولين بخش مهم همون بخش ۱ هست که اسم اون ID هست و شامل دو حرف MZ هست که تو اول همه فايلهای EXE وجود دارن و اگر اين دو کاراکتر نباشن فايل اجرا نميشه.
دو بخش مهم بعدی بخشهای ۲ و۳ هستن که در تعيين حجم فايل اجرايی از اونها استفاده ميشه. يک فايل EXE بطور منطقی به بخشهايی بنام PAGE يا همون صفحه تقسيم ميشه که هر صفحه شامل ۵۱۲ بايت هست. بخش ۳ در حقيقت تعداد اين صفحه ها توی يک فايل اجرايی EXE هست. بخش ۲ هم شامل تعداد بايتهای مورد استفاده در آخرين صفحه فايل هست.
بخشهای مهم بعدی ۸ و ۹ هستن که شامل Stack Segment يا SS و Stack Pointer يا SP هستن. وقتی فايل اجرايی برای اجرا در حافظه لود ميشه از اين مقادير برای مقدار دهی ثباتهای (Registers) ، همنام با اونها يعنی SS و SP استفاده ميشه.
دو بخش مهم بعدی هم بخشهای ۱۱و ۱۲ هستن که شامل مقادير Code Segment يا CS و Instruction Pointer يا IP هستن. از اين مقادير هم برای مقدار دهی ثباتهای CS و IP استفاده ميشه. وقتی برنامه برای اجرا در حافظه لود ميشه ، سيستم عامل کنترل برنامه رو به بخشی که با اين دو ثبات مشخص ميشه ميفرسته و برنامه از اونجا به بعد اجرا ميشه و توجه داشته باشين که اون محل ميتونه هرجايی از برنامه باشه پس در نتيجه يک فايل EXE ميتونه از هرجايی که بخواد اجرا بشه و اين هم يکی از فوايد فايلهای EXE هست.

منبع : پارسی کرکر


RE: ساختار فايل EXE - Amin_Mansouri - 03-31-2012

متاسفانه عکس حذف شده به درخواست یوزر parvaz دوباره عکس رو اپلود کردم :

دانلود :