pe file format


به نام خدا


فرمت فایل پی :


لغت pe مخفف  عبارت  portable executable  و به معنای فایل قابل اجرای  قابل حمل می باشد .


این فرمت نخستین بار در اوایل دهه ی 90 میلادی ( احتمالا در سال 1995 ) توسط شرکت مایکروسافت طراحی و ساخته شد و طی یک جلسه با حضور نمایندگان شرکت مایکروسافت و نمایندگانی از شرکتهای گوگل ، آی بی ام ، کورل ، ادوبی ، بورلند ، اینتل ، اچ پی ، دل و سایر شرکای نرم افزاری و سخت افزاری شرکت مایکروسافت  ، رسیمت یافت و این شرکا موافقت کردند که تمامی نرم افزارها  و درایورهایی را که برای سیستم عامل ویندوز می سازند دقیقا مطابق با خواسته ی شرکت مایکروسافت و طبق این معماری باشد تا قابلیت حمل روی تمامی نسخه های ویندوز را داشته باشند و هیچ ناسازگاری ایجاد نشود .

لذا با موافقت بیش از 35 شرکت معروف ، از آن زمان طبق خواسته ی شرکت مایکروسافت ، تمام نرم افزارها ، درایورها ، بازیها ، کتابخانه ها ، شبیه سازها ، ماشینهای مجازی ، و سایر مولفه های نرم افزاری دقیقا طبق این معماری ساخته شد و هنوز هم طبق همین معماری ساخته می شود . لذا تمامی نرم افزارها و درایورها و کتابخانه ها و .... که استاندارد هستند  و به پلتفرم خاصی وابسته نیستند و مستقل می باشند براحتی روی تمامی نسخه های سیستم عامل ویندوز اجرا می شوند . این موجب شده که این فرمت فایل بتواند از قابلیت حمل بسیار بالایی در تمامی پلفترمهای نرم افزاری و سخت افزاری ویندوزی  برخوردار باشند .


شما هر نوع نرم افزار ، درایور ، بازی کامپیوتری ، کتابخانه و شبیه ساز و اکتیو ایکس و اجزای کنترل پنل  و محافظ صفحه ی نمایش که طبق این معماری بسازید را می توانید روی تمام نسخه های ویندوز از ویندوز 95 تا ویندوز 10 براحتی اجرا نمایید .

به شرط اینکه چیزی که شما می سازید توسط زبانهای Native (نیتیو = بومی - وطنی ) ساخته شده باشند و به هیچ پلتفرم خارجی و فریم ورک وابسته نباشند .


خب زبانهای نیتیو یا بومی یعنی زبانهای ماشین ، اسمبلی ، و نسخه های قدیمی و کلاسیک زبانهای سطح بالا  ( بیسیک ، پاسکال ، سی ، سی پلاس پلاس ، و .....)


مثلا هنوز هم می توانید ویژوال استودیو 98 را که بین سالهای 94 تا 99 میلادی توسط مایکروسافت ساخته می شد را روی ویندوز 10 نصب و اجرا کنید .

هنوز هم می توانید دلفی 6 را روی ویندوز 10 نصب کنید .

زبانهای اسمبلی و ماشین نیز بدلیل اینکه بومی ترین و کلاسیک ترین و خالص ترین زبانهای برنامه نویسی دنیا می باشند  و هیچگونه ناخالصی ندارند و مستقیما با کرنل ویندوز و توابع API ویندوز و پردازنده ی کامپیوتر در ارتباط هستند به راحتی روی تمامی نسخه های سیستم عامل ویندوز ( از ویندوز 1 تا ویندوز 10 )  قابل اجرا می باشند .


( زبانهای ماشین و اسمبلی  روی تمامی سیستم عاملها از قبیل مولتیکس ،  یونیکس ، بی اس دی ، مینیکس ،  داس ، ویندوز ،  لینوکس ، اندروید ، مک ، کالیبری ، دکسوز ، آمیگا ، و ......... قابل اجرا می باشند زیرا به  هیچ سیستم عاملی وابسته نیستند و فقط به معماری سخت افزار وابستگی دارند . در این دو زبان شما می توانید  براحتی با کمک وقفه های بایوس کامپیوتر ، برنامه نویسی نمایید و هیچ نیازی به استفاده از توابع سیستم عاملها ندارید لذا این دو زبان برخلاف تصور رایج ، قابل حمل ترین زبانهای برنامه نویسی دنیا هستند و برنامه هایی را هم که می سازند بشدت قابل حمل هستند . )


نرم افزارها و درایورها و بازیهای قدیمی نیز می توانند تا حدودی روی ویندوز 10 اجرا شوند .

اینها همه بخاطر استاندارد بودن و قابل حمل بودن فایلهای پی (pe) می باشد .


فایلهای پی (PE) بطور خلاصه شامل این دسته از فایلها می شوند:


1- فایلهای با پسوند exe ( نرم افزار - بازی - نصاب نرم افزار و بازی و درایور و ..)

2- فایلهای با پسوند dll ( کتابخانه های پیوندی پویای ویندوز )

3- فایلهای با پسوند mui ( نرم افزارهای مدرن  ویندوز )

4- فایلهای با پسوند sys ( فایلهای سیستمی و درایورهای مدرن ویندوز)

5- فایلهای با پسوند cpl  (اجزای تشکیل دهنده ی کنترل پنل ویندوز)

6- فایلهای با پسوند ocx ( اکتیو ایکس - قابل استفاده در برنامه نویسی)

7- فایلهای با پسوند scr (محافظ صفحه ی نمایش برای جلوگیری از سوختن پیکسلها)

8- فایلهای با پسوند msi ( مایکروسافت اینستالر- مدیر پکیج و نصاب ویندوز)

9- هر نوع فایل که معماری استاندارد فایلهای pe را داشته باشد و قابل اجرا باشد و البته روی تمام نسخه های ویندوز قابلیت اجرا را داشته باشد یعنی قابل حمل باشد .


همانطور که می بینید فایلهای پی شامل چندین نوع فایل اصلی و مهم در سیستم عامل ویندوز می باشند که با دانستن معماری و عملکردشان می توانید براحتی بر ویندوز مسلط شده  و هر کار غیرممکنی را در ویندوز تنها با دستکاری این فایلها به ممکن تبدیل کنید .


برخلاف تصور برخی دوستان ، ویندوز اگر جایی بگوید که فلان کار را نمی توانی انجام بدهی عملا از افعال معکوس استفاده می کند زیرا دقیقا همانجا شما می توانید با یک مهندسی معکوس ، به کاری که ویندوز مانع از انجامش می شود برسید و آن کار را براحتی انجام دهید . بنابراین ویندوز نمی تواند در مقابل دانش و مهارت شما مقاومت نماید زیرا ساختار ویندوز از انعطاف پذیری خاصی برخوردار است و عملا شما می توانید هر نوع دستکاری دلخواهی در معماری فایلهای ویندوز ایجاد کرده و ویندوز را تحت فرمان خود بگیرید و به آزادی مورد نظرتان برسید .

بنابراین ویندوز اگر جایی به شما گفت : نه ! بدانید اونجا دقیقا همانجایی است که شما می توانید خلاف این حرف را به ویندوز ثابت کنید و بگویید : بله !

+

بطور خلاصه ، معماری کلی و عمومی تمامی انواع فایلهایی که در بالا به پسوندها و کاربردهایشان اشاره کردم یکسان است و شما برای هر نوع فایل فقط کافیست برخی کلمات جادویی یا برخی پرچمها را تغییر دهید و مثلا یک فایل exe که ذاتا نرم افزار یا بازی می باشد را به یک فایل dll که ذاتا یک کتابخانه می باشد یا به یک فایل sys که ذاتا درایور می باشد تبدیل کنید . فقط کافیست کمی تغییرات کوچک با دست در معماری ایجاد کنید تا بتوانید این کارهای جالب و بامزه را انجام دهید .

این تغییرات کوچک را منحصرا با زبان ماشین و از طریق یک هگز ادیتور براحتی می توانید انجام دهید و ویندوز را سفارشی نمایید .


بله ! درست شنیدید . ویندوز نیز قابل سفارشی شدن است . دقیقا مثل لینوکس . با این تفاوت که در لینوکس ، شما با  اصلاح  سورس کد و کامپایل مجدد می توانید لینوکس را سفارشی و شخصی کنید اما در ویندوز ،  شما با اصلاح  باینری می توانید ویندوز را به سیستم عامل سفارشی و شخصی خودتان تبدیل نمایید .

بنابراین برخلاف تصور رایج ، ویندوز اصلا یک سیستم عامل کلوزد سورس نیست زیرا سورس ویندوز همان باینری اش می باشد که فقط یک برنامه نویس زبان ماشین قادر است این سورس واقعی ویندوز را که به شکل کدهای زبان ماشین است رمزگشایی کرده و بازنویسی و اصلاح نماید و سپس به سادگی انرا ذخیره کند و ویندوز را دستکاری نماید و انرا به میل خودش تغییر دهد .

+

یکی از دلایلی که من اینقدر روی باینری و لزوم یادگیری زبان ماشین و کشف اسرار هگز ادیتورها تاکید می کنم همین است که شما متوجه شوید که ویندوز اصلا و ابدا کلوزد سورس نیست بلکه اوپن سورس است ولی سورس ویندوز دقیقا جلوی چشم شما اما به زبان ماشین نوشته شده و شما نباید به دنبال سورس اولیه که به زبان سطح بالا نوشته شده بگردید . بجای اتلاف وقت برای دیکامپایل کردن ویندوز و دسترسی به سورس سطح بالای ویندوز ، سعی کنید همان باینری را رمزگشایی کرده و با دست تان انرا تغییر دهید .

دیکامپایلرها نرم افزارهایی کودن هستند که عملا هیچ اطلاعاتی در اختیارتان قرار نمی دهند . درواقع دیکامپایلرها به  هیچ دردی نمی خورند و کارایی ندارند . شما هرگز به سورس اولیه که به زبان سطح بالا نوشته شده است نمی رسید حتی با ابزارهای گران قیمت و پرمدعا مثل آیدا پرو (IDA PRO) که حتی با وجود اون به اصطلاح دیکامپایلر هیچ اطلاعات واقعی به شما نشان نمی دهد و شما هرگز به سورس اولیه نمی رسید .

شخصا از این  IDA PRO  خوشم نمی آید زیرا هم بشدت گران قیمت و انحصاری است و با هزار بدبختی  و کرک و شماره سریال و ...  نصب می شود و  نسخه های رایگان اش نیز هیچ کارایی ندارند و هم  یک دیس اسمبلر نیمه اتوماتیک خشک و خالی است که هرگز نمی تواند نرم افزارهای ویندوز را کرک کند . ضمنا بدون کمک گرفتن از  صدها پلاگین و اسکریپت که عملا شما را به سمت زبانهای سطح بالا سوق می دهند و از زبان ماشین دور می کنند هیچ کاری نمی تواند انجام دهد و بسیار سنگین است  و به پردازنده ی کامپیوتر نیز فشار بسیار زیادی وارد می کند و هرگز قادر به مهندسی معکوس نیست . فقط یک دیس اسمبلر خشک و خالی است  . آیدا پرو  فقط اسم درکرده و کارایی ندارد  و شما را از زبانهای ماشین و اسمبلی دور می کند و فقط  یک ابزار مکار و فریبنده  و بی مصرف است .

دیکامپایلرها  خاصیت ریکامپایل ندارند . من دهها دیکامپایلر مختلف دانلود و نصب و اجرا کردم و ازمایش کردم . هیچکدامشان سورس اولیه را به من نشان ندادند و  توانایی ریکامپایل نیز نداشتند و فقط وقت مرا تلف کردند . خیلی هم سنگین بودند و به پردازنده ی کامپیوتر فشار فراوان وارد می کردند . بدون ذره ای کارایی .

اما با هر هگز ادیتور ساده و رایگان براحتی توانستم کدهای باینری ویندوز را دستکاری کرده و ویندوز و نرم افزارهای تجاری اش را کرک و سفارشی کنم و تغییرات مورد نظرم را اعمال نمایم .

بله با یک هگز ادیتور ساده و معمولی و رایگان می توانید کارهایی بکنید که هیچکدام از ابزارهای گران قیمت  و تجاری و انحصاری برنامه نویسی و کرک و هک قادر به انجام اینکارها نیستند .

شما برای انجام هرکاری در دنیای کامپیوتر  کافیست یک هگز ادیتور در دست داشته باشید . آنوقت هرکار غیرممکنی را به ممکن تبدیل می کنید .

زیرا هگز ادیتور تمام اجزای فایلها و نرم افزارها و سخت افزار کامپیوتر را به درستی و بصورت واضح به شما نشان می دهند و به شما اجازه ی هرنوع ویرایش را داده و شما به اوج قدرت می رسید . زیرا هگز ادیتور یعنی محیط برنامه نویسی با باینری .


بجای دیکامپایل کردن نرم افزارها سعی کنید باینری را بفهمید و با دست انرا تغییر دهید  .

بجز هگز ادیتور  شما  عملا به هیچ نوع ابزار کرک نیاز ندارید . زیرا اکثر ابزارهای کرک  فقط  شما را از زبان ماشین دور می کنند و نمی گذارند که شما باینری را بفهمید و ویرایش کنید و بازهم شما را به سمت زبانهای سطح بالا  تشویق می کنند و این یک  کلک و حقه است و نباید فریب بخورید .

+

خب . حرف دیگه بسه .  در این پست تعدادی فایل آموزشی برای تشریح معماری فایلهای pe  سیستم عامل ویندوز را آپلود می کنم  . این فایلها و البته فایلهای پست قبلی را  دانلود کنید تا  از  پست بعدی تدریس را رسما شروع کنم . از پست بعدی دقیقا طبق این فایلهای آموزشی  زبان برنامه نویسی ماشین و  اسرار سیستم عامل ویندوز و نرم افزارهای ویندوز را برای شما تشریح خواهم کرد . انشاء ا...

+

لینک دانلود تعدادی از فایلهای آموزش معماری فرمت فایلهای پی :




https://bayanbox.ir/download/1204395391224367135/CBJ-2005-74.pdf



https://bayanbox.ir/download/2992818225910625491/coff.pdf



https://bayanbox.ir/download/5571667870082747769/PE-Format.pdf




https://bayanbox.ir/download/9107272993082199355/Portable-Executable.pdf


این فایل پی دی اف  آخری  ،خودش به تنهایی  لینک دهها فایل مربوط به معماری فایلهای پی را به شما نشان می دهد و عملا شما به دهها منبع رسمی و معتبر و کامل آموزشی دسترسی پیدا می کنید .

+

+

نگاه دقیق به درون فایلهای PE : گشت و گذاری   در اسناد شرکت مایکروسافت درمورد فایلهای اجرایی قابل حمل 32 بیتی  ویندوز:


https://bayanbox.ir/download/8184218652230363212/Peering-Inside-the-PE-A-Tour-of-the-Win32-Portable-Executable-File-Format-Microsoft-Docs.mht


نکته ی1 : فایلهای با پسوند pdf را از درون  مایکروسافت اج  مشاهده نمایید .


نکته ی 2 :  فایلهای با پسوند  mht  را  از درون  اینترنت اکسپلورر مشاهده نمایید .

 

نکته ی 3 : نرم افزارهای تخصصی فراوانی تحت عنوان کلی  PE Tools  قبلا در نت وجود داشتند که متاسفانه الان از دسترس  خارج شدند زیرا تقریبا تمامی آنتی ویروسها از جمله ویندوز دفندر  این نرم افزارها را حاوی ویروس و تروجان معرفی کرده  و حذف کردند .

من  تعدادی از این نرم افزارها خصوصا  نرم افزار معروف  Lord PE  را در اختیار داشتم که متاسفانه ویندوز دفندر بی سرو صدا انرا از روی هارد رایانه ام حذف کرد !!

از دیدگاه ویندوز دفندر تمامی نرم افزارهای تخصصی زبان ماشین و معماری فایلهای ویندوز ، بدافزار محسوب شده و در زمانی که حتی فکرش را هم نمی کنید بی سرو صدا این نرم افزارها را حذف می کند !


بهرحال شما با همان هگز ادیتورها که در پست قبلی آپلود کردم و یا با هر هگز ادیتور دلخواه و البته با کمک این فایلهای آموزشی که در این پست آپلود کردم و فایلهای مشابه  می توانید به یک دیدگاه و دانش کلی و عمومی در مورد معماری نرم افزارها و درایورها و کتابخانه های سیستم عامل ویندوز دست یابید  و آماده شوید که من  روش برنامه نویسی با زبان ماشین و با کمک هگز ادیتور را همینجا در همین وبلاگ وحیدمی  به شما  آموزش دهم .


مجددا تاکید می کنم  : هگز ادیتورها همه منظوره ترین نرم افزارهای دنیا می باشند و برای انجام هرکاری می توانید از هگز ادیتور استفاده نمایید . پس فقدان ابزارهای تخصصی نباید مانع کار شود .


من به مرور زمان سعی می کنم با ترجمه کردن منابع و ابزارهای مختلف ، یکسری فایل آموزشی به زبان فارسی در رابطه با روش برنامه نویسی با زبان ماشین را تدوین و سپس آپلود نمایم . چنانچه مایل بودید  اون فایلهای شخصی را نیز دانلود نمایید !

فرایند ترجمه بسیار وقتگیر است و ممکن است چند سال طول بکشد . زیرا این منابع هم بسیار زیاد هستند و هم بسیار حجیم و البته تخصصی و ترجمه کردن شان کار بسیار دشوار و وقتگیری می باشد . پس  فعلا از روی همین منابع اندک که به زبان انگلیسی نوشته شده اند  سعی کنید یک کلیتی از معماری نرم افزارهای ویندوز را در ذهن تان مجسم نمایید تا آمادگی لازم برای تدریس را داشته باشید .


نکته ی مهم:

من بعد از انتشار این پست ، شروع به ترجمه ی منابع اصلی می نمایم و سپس با کمک این ترجمه ها و البته تجربه ی شخصی خودم ،  تدریس را از پست بعدی شروع می کنم .


لذا انتشار پست بعدی ممکن است با تاخیر طولانی انجام شود . بنابراین امکان دارد چندین  ماه  در خدمت شما عزیزان نباشم . زیرا باید تعداد فراوانی از منابع را ترجمه کنم و این ترجمه نیز باید با دقت و وسواس خاصی انجام شود تا خدای ناکرده چیزی از قلم نیفتد و اطلاعات بصورت دقیق و درست ارائه شوند . بنابراین تا اطلاع ثانوی  ( دستکم شش ماه ) نمی توانم هیچ مطلب جدیدی   منتشر کنم و باید  منابع اصلی را ترجمه و ویراستاری نمایم . پس از اتمام ترجمه و ویراستاری و تدوین منابع آموزشی ، پست بعدی را که حاوی مطالب آموزشی  و البته فایلهای آموزشی به زبان فارسی می باشند را  منتشر خواهم کرد .

تا آن موقع از حضور شما عزیزان  موقتا  خداحافظی می کنم و کار ترجمه را شروع می کنم . به محض اتمام کار و آپلود منابع فارسی ،  مجددا به اینجا برمی گردم .


پس تا دیداری دیگر : خدا نگهدار!


وحید محمدی - وبلاگ وحیدمی


https://vahidmy.blog.ir