Windows Portable Executable-format har sina egna små nyanser, så här är en snabbguide om hur de fungerar.

En Windows Portable Executable (PE) är det ursprungliga Windows-filformatet för körbara filer och andra binära filtyper. PE-filformatet är utformat för att vara plattformsoberoende, så det kan användas på alla Windows-maskiner kör samma operativsystemversion och processorarkitektur som filen var för sammanställt.

Så låt oss dissekera Windows PE-filformatet och lära oss om dess struktur och beståndsdelar.

Vad är en bärbar körbar Windows-fil?

Innan du utforskar Windows Portable Executable-format är det viktigt att reda ut grunderna. Låt oss ta ett steg tillbaka och lära oss om det underliggande konceptet för Windows PE—COFF.

När du kompilerar källkoden till ett program genererar kompilatorn en objektfil (.obj). Denna objektfil innehåller instruktioner för datorn i binärt format.

COFF eller Common Object File Format är en standardiserad uppsättning konventioner för att representera binära instruktioner. COFF hjälper till att upprätthålla plattformsoberoende kompatibilitet eftersom alla COFF-filformat följer samma uppsättning regler och konventioner för att organisera kod och data. Även om COFF ursprungligen utvecklades för användning på *NIX-system, är det nu överallt på alla plattformar.

instagram viewer

Filformatet Windows Portable Executable (PE) är en modifiering av COFF och har utvecklats för att endast användas på 32-bitars och 64-bitars Windows-system. Till skillnad från COFF, som tillhandahåller ett standardiserat format för objektfiler, tillhandahåller Windows PE ett standardiserat format för körbara filer och biblioteksfiler.

Den innehåller sektioner och rubriker som ger information om den körbara filen i fråga och hjälper systemladdaren att hantera data relaterad till den körbara filen. Rubrikerna i en PE-fil hjälper systemladdaren att mappa filen till minnet, lösa beroenden som API-export/-import, hantera resurser och förbereda filen för exekvering.

Linux har också sin egen iteration av COFF; det heter Executable Link File eller kort sagt ELF binary. Du kan kontrollera om en fil är ELF eller inte genom att köra fil kommando på Linux med filnamnet som första argument.

Strukturen för en bärbar Windows-körbar

Filformatet Portable Executable består av flera komponenter, var och en med ett specifikt syfte. Dessa komponenter inkluderar:

  • Sektionsrubriker, som beskriver layouten och egenskaperna för varje sektion av filen. Sektionerna i sig, som innehåller körbar kod, data och resurser.
  • PE-huvudet, som ger information om filens övergripande struktur och krav.
  • DOS-huvudet, som innehåller ett litet program som körs när filen körs på ett DOS-system.
  • Och slutligen PE-sektionsrubrikerna, som beskriver varje sektions plats och attribut i filen.

Sammantaget arbetar dessa komponenter tillsammans för att skapa ett strukturerat format som gör att operativsystemet kan ladda, exekvera och hantera den körbara koden som finns i filen korrekt. Låt oss lära oss exakt vad varje komponent gör.

DOS-huvud

Den första delen av en PE-fil kallas DOS Header. En liten mängd körbar kod lagras i DOS-huvudet som också kan köras på en DOS-maskin.

Denna kod kallas även MS-DOS-stubben och används för att skicka ett felmeddelande på system som inte stöder PE-filen.

PE Header

Portable Executable-huvudet ger information om den körbara filen, som hur stor filen är, var de olika delarna finns och vilka resurser den körbara behöver. PE-huvudet har också information om typen av körbar fil, om det är en Windows .DLL-fil eller en .EXE.

Avsnittsrubriker

Sektioner implementeras för att organisera de många komponenterna i en körbar fil som kod, data och resurser som textsträngar, bilder etc. Sektionsrubrikerna innehåller information om storleken och platsen för varje sektion, såväl som eventuella tillhörande flaggor.

Flaggorna som är associerade med varje avsnittshuvud kan indikera olika attribut för avsnittet, till exempel om det är körbart, skrivbart eller läsbart. Dessa flaggor hjälper operativsystemet att korrekt ladda och hantera innehållet i varje avsnitt under programkörning.

Avsnitt

Sektionerna själva omfattar den körbara filens verkliga kod, data och resurser. Varje segment är justerat till en viss minnesgräns och har sin egen uppsättning attribut som påverkar hur operativsystemet hanterar det.

Nu vet du allt om Windows Portable Executable File Format

Windows Portable Executable är ett robust och mångsidigt filformat som används för att producera en mängd olika Windows-program och systemkomponenter. Genom att förstå strukturen för PE-filformatet kan utvecklare konstruera effektiva appar som drar fördel av Windows särdrag.

Förutom att få en djupgående förståelse för plattformen som din app kommer att köras på, genom att följa några standard bra kodningsmetoder kommer du att kunna maximera kvaliteten på applikationen oavsett vilken plattform den körs på.