Formát Windows Portable Executable má svoje vlastné malé nuansy, takže tu je rýchly sprievodca, ako fungujú.
Windows Portable Executable (PE) je natívny formát súboru Windows pre spustiteľné súbory a iné typy binárnych súborov. Formát súboru PE je navrhnutý tak, aby bol nezávislý od platformy, takže ho možno použiť na akomkoľvek počítači so systémom Windows s rovnakou verziou operačného systému a architektúrou procesora, pre ktorú bol súbor určený skompilovaný.
Poďme si teda rozobrať formát súboru Windows PE a dozvedieť sa o jeho štruktúre a základných komponentoch.
Čo je to prenosný spustiteľný súbor systému Windows?
Pred preskúmaním formátu Windows Portable Executable je dôležité objasniť si základy. Vráťme sa o krok späť a dozvieme sa o základnej koncepcii Windows PE – COFF.
Keď kompilujete zdrojový kód do programu, kompilátor vygeneruje objektový súbor (.obj). Tento objektový súbor obsahuje inštrukcie pre počítač v binárnom formáte.
COFF alebo Common Object File Format je štandardizovaný súbor konvencií na reprezentáciu binárnych inštrukcií. COFF pomáha udržiavať kompatibilitu medzi platformami, pretože všetky formáty súborov COFF sa riadia rovnakým súborom pravidiel a konvencií pre organizáciu kódu a údajov. Hoci bol COFF pôvodne vyvinutý na použitie v systémoch *NIX, teraz je všadeprítomný na všetkých platformách.
Formát súborov Windows Portable Executable (PE) je modifikáciou COFF a bol vyvinutý na použitie výhradne na 32-bitové a 64-bitové systémy Windows. Na rozdiel od COFF, ktorý poskytuje štandardizovaný formát pre objektové súbory, Windows PE poskytuje štandardizovaný formát pre spustiteľné súbory a súbory knižníc.
Obsahuje sekcie a hlavičky, ktoré poskytujú informácie o príslušnom spustiteľnom súbore a pomáha zavádzaču systému spravovať údaje súvisiace so spustiteľným súborom. Hlavičky v súbore PE pomáhajú zavádzaču systému mapovať súbor do pamäte, riešiť závislosti, ako sú exporty/importy API, spravovať zdroje a pripraviť súbor na spustenie.
Linux má tiež svoju vlastnú iteráciu COFF; volá sa Executable Link File alebo v skratke ELF binárny. Môžete skontrolovať, či je súbor ELF alebo nie spustením súbor príkaz v systéme Linux s názvom súboru ako prvým argumentom.
Štruktúra prenosného spustiteľného súboru Windows
Formát súboru Portable Executable pozostáva z niekoľkých komponentov, z ktorých každý má špecifický účel. Tieto komponenty zahŕňajú:
- Hlavičky sekcií, ktoré popisujú rozloženie a charakteristiky každej sekcie súboru Samotné sekcie, ktoré obsahujú spustiteľný kód, údaje a zdroje.
- Hlavička PE, ktorá poskytuje informácie o celkovej štruktúre súboru a požiadavkách.
- Hlavička DOS, ktorá obsahuje malý program, ktorý sa spúšťa pri spustení súboru v systéme DOS.
- A nakoniec hlavičky sekcií PE, ktoré popisujú umiestnenie a atribúty každej sekcie v súbore.
Celkovo tieto komponenty spolupracujú na vytvorení štruktúrovaného formátu, ktorý umožňuje operačnému systému správne načítať, spustiť a spravovať spustiteľný kód obsiahnutý v súbore. Poďme sa naučiť, čo presne robí každý komponent.
Hlavička DOS
Prvá časť súboru PE sa nazýva hlavička DOS. Malé množstvo spustiteľného kódu je uložené v hlavičke DOS, ktorú možno spustiť aj na počítači so systémom DOS.
Tento kód sa tiež nazýva stub MS-DOS a používa sa na vyvolanie chybového hlásenia v systémoch, ktoré nepodporujú súbor PE.
Hlavička PE
Hlavička Portable Executable poskytuje informácie o spustiteľnom súbore, napríklad aký veľký je súbor, kde sa nachádzajú rôzne časti a aké zdroje spustiteľný súbor potrebuje. Hlavička PE obsahuje aj informácie o type spustiteľného súboru, či už ide o a Súbor .DLL systému Windows alebo .EXE.
Hlavičky sekcií
Sekcie sú implementované na usporiadanie mnohých komponentov spustiteľného súboru, ako sú kód, údaje a zdroje, ako sú textové reťazce, obrázky atď. Hlavičky sekcií obsahujú informácie týkajúce sa veľkosti a umiestnenia každej sekcie, ako aj všetky súvisiace príznaky.
Príznaky spojené s každou hlavičkou sekcie môžu indikovať rôzne atribúty sekcie, ako napríklad, či je spustiteľná, zapisovateľná alebo čitateľná. Tieto príznaky pomáhajú operačnému systému správne načítať a spravovať obsah každej sekcie počas vykonávania programu.
Sekcie
Samotné sekcie obsahujú skutočný kód spustiteľného súboru, údaje a zdroje. Každý segment je zarovnaný s určitou hranicou pamäte a má svoj vlastný súbor atribútov, ktoré ovplyvňujú, ako s ním operačný systém narába.
Teraz viete všetko o formáte Windows Portable Executable File Format
Windows Portable Executable je robustný a všestranný formát súboru používaný na vytváranie širokej škály aplikácií a systémových komponentov Windows. Pochopením štruktúry formátu súboru PE môžu vývojári vytvárať efektívne aplikácie, ktoré využívajú charakteristické vlastnosti systému Windows.
Okrem toho, že budete do hĺbky rozumieť platforme, na ktorej bude vaša aplikácia fungovať, budete dodržiavať niekoľko štandardných pravidiel kódovacích postupov, budete môcť maximalizovať kvalitu aplikácie bez ohľadu na platformu, na ktorej je spustená na.