Formát Windows Portable Executable má své vlastní drobné nuance, takže zde je rychlý průvodce, jak fungují.
Windows Portable Executable (PE) je nativní formát souborů Windows pro spustitelné soubory a další typy binárních souborů. Formát souboru PE je navržen tak, aby byl nezávislý na platformě, takže jej lze použít na jakémkoli počítači se systémem Windows se stejnou verzí operačního systému a architekturou procesoru, pro kterou byl soubor určen sestaven.
Pojďme si tedy rozebrat formát souboru Windows PE a dozvědět se o jeho struktuře a součástech.
Co je přenosný spustitelný soubor systému Windows?
Než prozkoumáte formát Windows Portable Executable, je důležité si ujasnit základy. Vraťme se o krok zpět a seznámíme se se základním konceptem Windows PE – COFF.
Když zkompilujete zdrojový kód do programu, kompilátor vygeneruje objektový soubor (.obj). Tento objektový soubor obsahuje instrukce pro počítač v binárním formátu.
COFF neboli Common Object File Format je standardizovaná sada konvencí pro reprezentaci binárních instrukcí. COFF pomáhá udržovat kompatibilitu napříč platformami, protože všechny formáty souborů COFF dodržují stejný soubor pravidel a konvencí pro organizaci kódu a dat. Přestože byl COFF původně vyvinut pro použití v systémech *NIX, je nyní všudypřítomný na všech platformách.
Formát souboru Windows Portable Executable (PE) je modifikací COFF a byl vyvinut pro použití výhradně na 32bitové a 64bitové systémy Windows. Na rozdíl od COFF, který poskytuje standardizovaný formát pro objektové soubory, Windows PE poskytuje standardizovaný formát pro spustitelné soubory a soubory knihoven.
Obsahuje sekce a hlavičky, které poskytují informace o příslušném spustitelném souboru a pomáhá zavaděči systému spravovat data související se spustitelným souborem. Záhlaví v souboru PE pomáhají zavaděči systému mapovat soubor do paměti, řešit závislosti, jako jsou exporty/importy API, spravovat prostředky a připravit soubor pro spuštění.
Linux má také svou vlastní iteraci COFF; nazývá se to Executable Link File nebo zkráceně ELF binární. Můžete zkontrolovat, zda je soubor ELF nebo ne spuštěním souborový příkaz na Linuxu s názvem souboru jako prvním argumentem.
Struktura přenosného spustitelného souboru Windows
Formát souboru Portable Executable se skládá z několika komponent, z nichž každá má specifický účel. Mezi tyto komponenty patří:
- Záhlaví sekcí popisující rozložení a charakteristiky každé sekce souboru Samotné sekce, které obsahují spustitelný kód, data a prostředky.
- Záhlaví PE, které poskytuje informace o celkové struktuře a požadavcích souboru.
- Hlavička DOS, která obsahuje malý program, který se spouští při spuštění souboru v systému DOS.
- A nakonec záhlaví sekcí PE, která popisují umístění a atributy jednotlivých sekcí v souboru.
Celkově tyto součásti spolupracují na vytvoření strukturovaného formátu, který umožňuje operačnímu systému správně načíst, spustit a spravovat spustitelný kód obsažený v souboru. Pojďme se naučit, co přesně jednotlivé komponenty dělají.
Hlavička DOS
První část souboru PE se nazývá DOS Header. Malé množství spustitelného kódu je uloženo v hlavičce DOS, kterou lze také spustit na počítači DOS.
Tento kód se také nazývá stub MS-DOS a používá se k vyvolání chybové zprávy na systémech, které nepodporují soubor PE.
PE záhlaví
Záhlaví Portable Executable poskytuje informace o spustitelném souboru, například jak velký je soubor, kde jsou umístěny různé části a jaké zdroje spustitelný soubor potřebuje. Záhlaví PE také obsahuje informace o typu spustitelného souboru, ať už se jedná o a Windows soubor .DLL nebo .EXE.
Záhlaví sekcí
Sekce jsou implementovány k uspořádání mnoha součástí spustitelného souboru, jako je kód, data a zdroje, jako jsou textové řetězce, obrázky atd. Záhlaví sekcí obsahují informace týkající se velikosti a umístění každé sekce, stejně jako všechny související příznaky.
Příznaky spojené s každým záhlavím oddílu mohou indikovat různé atributy oddílu, jako například zda je spustitelný, zapisovatelný nebo čitelný. Tyto příznaky pomáhají operačnímu systému správně načíst a spravovat obsah každé sekce během provádění programu.
Sekce
Samotné sekce obsahují skutečný kód, data a zdroje spustitelného souboru. Každý segment je zarovnán k určité hranici paměti a má vlastní sadu atributů, které ovlivňují, jak s ním operační systém nakládá.
Nyní víte vše o formátu Windows Portable Executable File Format
Windows Portable Executable je robustní a všestranný formát souboru používaný k vytváření široké škály aplikací a systémových komponent Windows. Díky pochopení struktury formátu souboru PE mohou vývojáři vytvářet efektivní aplikace, které využívají charakteristické vlastnosti Windows.
Kromě toho, že budete do hloubky porozumět platformě, na které bude vaše aplikace běžet, budete dodržovat několik standardních věcí kódování, budete moci maximalizovat kvalitu aplikace bez ohledu na platformu, na které běží na.