Wat is het EXE-bestandsformaat?
Een bestand met de extensie .exe bevat een gecompileerd programma en de bijbehorende bronnen voor Microsoft Windows, DOS, of (historisch gezien) OS/2. .exe-bestanden kunnen applicaties, games, installatieprogramma's of malware bevatten. Ze kunnen worden gestart vanaf de opdrachtregel of via de GUI door te dubbelklikken. .exe-bestanden zijn systeemafhankelijk - ze slaan gegevens op in binair formaat en hun interne signatuur bepaalt het uitvoerbare subtype.
Elke .exe begint met de twee-byte magic signature MZ (hex 4D 5A) op positie 0, vernoemd naar mede-ontwerper Mark Zbikowski. Moderne Windows-executables bevatten bovendien een PE\0\0-signatuur op de positie die is opgeslagen op locatie 0x3C, wat bevestigt dat het bestand een Portable Executable is. Er zijn vijf belangrijke historische .exe-subformaten:
MZ- 16-bits formaat systeemeigen voor DOS.NE- 16-bits „New Executable”-formaat gebruikt door 16-bits Windows (1.x-3.x) en OS/2 1.x; kan niet draaien op kaal DOS, maar wordt ondersteund door 32-bits Windows-compatibiliteitslagen en OS/2.LX- 32-bits formaat voor OS/2 2.0 en later.LE- 16/32-bits formaat voornamelijk gebruikt voor VxD-stuurprogramma's in oudere Windows-systemen (uitgebracht voor het jaar 2000).PE- „Portable Executable”, die zowel 32-bits (PE32) als 64-bits (PE32+) versies omvat; geïntroduceerd met Windows NT en tegenwoordig het dominante formaat. ARM- en ARM64-varianten breiden PE uit voor Windows op ARM-apparaten.
.exe-bestanden kunnen bronnen opslaan zoals pictogrammen, dialoogvensters, versie-informatie, audio en applicatiemanifesten. Het is belangrijk om te onthouden dat niet alle typen .exe-bestanden op elk systeem kunnen worden uitgevoerd, aangezien dergelijke bestanden platformafhankelijk zijn. Om een .exe op een ander besturingssysteem uit te voeren, is een geschikt emulatieprogramma zoals Wine of CrossOver vereist. Zelfuitpakkende archieven gebruiken ook de extensie .exe, beginnend met een MZ/PE-stub en met een ZIP-archief, 7z of CAB payload intern.
Moderne Windows .exe-bestanden bevatten gewoonlijk een Authenticode-codesignatuur om de identiteit van de uitgever te verifiëren, en het besturingssysteem dwingt beveiligingsfuncties af, waaronder ASLR, DEP/NX en Control Flow Guard. Imports uit .dll-bestanden worden tijdens het laden afgehandeld door de Windows PE-loader. .exe-bestanden van onbekende of niet-vertrouwde bronnen moeten met zorg worden behandeld, omdat ze bij uitvoering een risico op malware-infectie met zich meebrengen.
Beveiliging & veiligheid
RISICO: HIGHEXE is de belangrijkste vector voor malware op Windows: het kan elke code uitvoeren met uw rechten, dus virussen, trojans, ransomware en „cracks/keygens” zijn doorgaans EXE-bestanden. Veiligheidschecklist: voer alleen EXE's uit van de officiële leverancier of een vertrouwde winkel; controleer voor het uitvoeren de digitale handtekening (rechtermuisknop → Eigenschappen → Digitale handtekeningen) - legitieme software is digitaal ondertekend en de naam van de uitgever komt overeen; wees zeer achterdochtig bij EXE's die via e-mail, chat of gebundeld met „gratis” downloads binnenkomen. Waarschuwingen van Windows SmartScreen en antivirus bij een niet-herkende EXE moeten serieus worden genomen. Om een download te inspecteren zonder deze uit te voeren, opent u deze als een archief in 7-Zip, of scant u deze op VirusTotal. Let op dubbele extensies zoals „factuur.pdf.exe” en EXE's die vermomd zijn met documentpictogrammen.
Formaatdetails
in een notendopProgramma's die EXE-bestanden openen
Technische details
diepe specificaties| Magic bytes | MZ (4D 5A) op offset 0; de PE-signatuur PE\0\0 (50 45 00 00) verschijnt op de offset die is opgeslagen in de MZ-stub op 0x3C |
| MIME-type | application/vnd.microsoft.portable-executable |
| Architectuurondersteuning | x86 (32-bits), x86-64/AMD64 (64-bits), ARM, ARM64; de doelmachine is gecodeerd in het veld Machine van de COFF File Header |
| Subformaat-varianten | MZ (MS-DOS 16-bits), NE (16-bits Windows/OS/2 1.x), LX (OS/2 2.x 32-bits), LE (VxD-stuurprogramma's), PE32 (32-bits Windows), PE32+ (64-bits Windows) |
| PE-sectie-indeling | Secties omvatten .text (uitvoerbare code), .data (geïnitialiseerde gegevens), .rdata (alleen-lezen gegevens), .rsrc (bronnen) en .reloc (basis-herlocaties) |
| Entry point | Relatief virtueel adres (RVA) van de eerste instructie, opgeslagen in AddressOfEntryPoint in de PE Optional Header |
| Importtabel | Lijst met de DLL's en benoemde of ordinale functie-exports die het binaire bestand vereist; afgehandeld door de Windows-loader bij het opstarten |
| Exporttabel | Stelt optioneel functies of gegevenssymbolen beschikbaar voor gebruik door andere executables of DLL's; voornamelijk aanwezig in DLL's maar incidenteel in EXE's |
| Resourcesectie (.rsrc) | Sluit pictogrammen, bitmaps, dialoogvensters, tekenreekstabellen, versie-informatie en applicatiemanifesten in een getypeerde/benoemde/taal-getagde boomstructuur in |
| Code signing | Authenticode (PKCS#7/CMS) digitale handtekening opgeslagen in de Security Directory; gevalideerd door Windows SmartScreen, UAC en de kernel tijdens het laden van stuurprogramma's |
| Beveiligingsmaatregelen | DllCharacteristics-vlaggen in de Optional Header maken ASLR, DEP/NX, Control Flow Guard (CFG), SafeSEH en High-Entropy VA voor 64-bits binaire bestanden mogelijk |
| PE-checksum | Vier-byte CheckSum-veld in de Optional Header; afgedwongen door de Windows-loader voor kernel-mode stuurprogramma's en systeembestanden |
| Subsysteemtypen | Windows GUI, Windows console (CUI), native (kernel-mode), EFI-applicatie, EFI boot service driver, EFI runtime driver |
| Gebruik als zelfuitpakkend archief | SFX-pakketten sluiten een ZIP-, 7z- of CAB-payload in na de PE-stub; het bestand wordt uitgevoerd als een normale executable en pakt automatisch uit |
| Uitgebracht | 1985 (MS-DOS MZ); PE format since Windows NT 3.1, 1993 |
| Specificatie | learn.microsoft.com |