Windows Portable Executable-formatet har sine egne små nuancer, så her er en hurtig guide til, hvordan de fungerer.
En Windows Portable Executable (PE) er det oprindelige Windows-filformat for eksekverbare filer og andre binære filtyper. PE-filformatet er designet til at være platformsuafhængigt, så det kan bruges på enhver Windows-maskine kører den samme operativsystemversion og processorarkitektur, som filen var til kompileret.
Så lad os dissekere Windows PE-filformatet og lære om dets struktur og bestanddele.
Hvad er en Windows-bærbar eksekverbar fil?
Før du udforsker Windows Portable Executable-formatet, er det vigtigt at rydde op i det grundlæggende. Lad os tage et skridt tilbage og lære om det underliggende koncept for Windows PE—COFF.
Når du kompilerer kildekoden til et program, genererer compileren en objektfil (.obj). Denne objektfil indeholder instruktioner til computeren i binært format.
COFF eller Common Object File Format er et standardiseret sæt konventioner til at repræsentere binære instruktioner. COFF hjælper med at opretholde kompatibilitet på tværs af platforme, da alle COFF-filformater følger det samme sæt regler og konventioner for organisering af kode og data. Selvom COFF oprindeligt blev udviklet til brug på *NIX-systemer, er det nu allestedsnærværende på tværs af alle platforme.
Windows Portable Executable (PE) filformatet er en modifikation af COFF og er udviklet til udelukkende at blive brugt på 32-bit og 64-bit Windows-systemer. I modsætning til COFF, som giver et standardiseret format til objektfiler, giver Windows PE et standardiseret format for eksekverbare filer og biblioteksfiler.
Den indeholder sektioner og overskrifter, som giver information om den pågældende eksekverbare og hjælper systemindlæseren med at administrere data relateret til den eksekverbare. Overskrifterne i en PE-fil hjælper systemindlæseren med at kortlægge filen til hukommelsen, løse afhængigheder såsom API-eksport/import, administrere ressourcer og forberede filen til eksekvering.
Linux har også sin egen iteration af COFF; det hedder Executable Link File eller kort sagt ELF binær. Du kan kontrollere, om en fil er ELF eller ej ved at køre fil kommando på Linux med filnavnet som det første argument.
Strukturen af en bærbar Windows-eksekverbar
Filformatet Portable Executable består af flere komponenter, hver med et specifikt formål. Disse komponenter omfatter:
- Sektionsoverskrifter, som beskriver layoutet og karakteristika for hver sektion af filen Selve sektionerne, som indeholder eksekverbar kode, data og ressourcer.
- PE-headeren, som giver information om filens overordnede struktur og krav.
- DOS-headeren, som indeholder et lille program, der kører, når filen køres på et DOS-system.
- Og endelig PE-sektionsoverskrifterne, som beskriver hver sektions placering og attributter i filen.
Overordnet set arbejder disse komponenter sammen om at skabe et struktureret format, der gør det muligt for operativsystemet at indlæse, eksekvere og administrere den eksekverbare kode i filen korrekt. Lad os lære præcis, hvad hver komponent gør.
DOS-header
Den første del af en PE-fil kaldes DOS-headeren. En lille mængde eksekverbar kode er gemt i DOS-headeren, som også kan køres på en DOS-maskine.
Denne kode kaldes også MS-DOS stubben og bruges til at sende en fejlmeddelelse på systemer, der ikke understøtter PE-filen.
PE Header
Overskriften Portable Executable giver information om den eksekverbare, som hvor stor filen er, hvor de forskellige dele er placeret, og hvilke ressourcer den eksekverbare har brug for. PE-headeren har også information om typen af eksekverbar fil, om det er en Windows .DLL-fil eller en .EXE.
Sektionsoverskrifter
Sektioner er implementeret for at organisere de mange komponenter i en eksekverbar, såsom kode, data og ressourcer som tekststrenge, billeder osv. Sektionsoverskrifterne indeholder oplysninger om størrelsen og placeringen af hver sektion, samt eventuelle tilknyttede flag.
De flag, der er knyttet til hver sektionsoverskrift, kan angive forskellige attributter for sektionen, såsom om den er eksekverbar, skrivbar eller læsbar. Disse flag hjælper operativsystemet til korrekt at indlæse og administrere indholdet af hver sektion under programafvikling.
Afsnit
Selve sektionerne omfatter den eksekverbares rigtige kode, data og ressourcer. Hvert segment er justeret til en bestemt hukommelsesgrænse og har sit eget sæt attributter, der påvirker, hvordan operativsystemet håndterer det.
Nu ved du alt om Windows Portable Executable File Format
Windows Portable Executable er et robust og alsidigt filformat, der bruges til at producere en lang række Windows-applikationer og systemkomponenter. Ved at forstå strukturen af PE-filformatet kan udviklere konstruere effektive apps, der drager fordel af Windows' karakteristiske egenskaber.
Udover at få en dybdegående forståelse af den platform, din app vil køre på, ved at følge nogle få standardgoder kodningspraksis, vil du være i stand til at maksimere kvaliteten af applikationen, uanset hvilken platform den kører på.