Che cos'è il formato di file EXE?
Un file con l'estensione .exe contiene un programma compilato e le sue risorse per Microsoft Windows, DOS o (storicamente) OS/2. I file .exe possono memorizzare applicazioni, giochi, programmi di installazione o malware. Possono essere lanciati dalla riga di comando o tramite l'interfaccia grafica con un doppio clic. I file .exe dipendono dal sistema - memorizzano i dati in formato binario e la loro firma interna determina il sottotipo di eseguibile.
Ogni .exe inizia con la firma magica a due byte MZ (hex 4D 5A) all'offset 0, chiamata così dal suo co-progettista Mark Zbikowski. Gli eseguibili moderni di Windows portano inoltre una firma PE\0\0 all'offset memorizzato nella posizione 0x3C, che conferma il file come un Portable Executable. Esistono cinque principali sottostrutture storiche di .exe:
MZ- Formato a 16 bit nativo per DOS.NE- Formato «New Executable» a 16 bit usato da Windows a 16 bit (1.x-3.x) e OS/2 1.x; non può girare su DOS puro, ma è supportato dai livelli di compatibilità di Windows a 32 bit e da OS/2.LX- Formato a 32 bit per OS/2 2.0 e versioni successive.LE- Formato a 16/32 bit usato principalmente per i driver VxD nei vecchi sistemi Windows (quelli rilasciati prima dell'anno 2000).PE- «Portable Executable», che copre sia le versioni a 32 bit (PE32) che a 64 bit (PE32+); introdotto con Windows NT è il formato dominante oggi. Le varianti ARM e ARM64 estendono il PE per i dispositivi Windows on ARM.
I file .exe possono contenere risorse come icone, finestre di dialogo, informazioni sulla versione, audio e manifest dell'applicazione. È importante ricordare che non tutti i tipi di file .exe possono essere eseguiti su un determinato sistema, poiché tali file dipendono dalla piattaforma. Per eseguire un .exe su un sistema operativo diverso, è necessario uno strumento di emulazione appropriato come Wine o CrossOver. Anche gli archivi autoestraenti usano l'estensione .exe, iniziando con uno stub MZ/PE e trasportando internamente un payload archivio ZIP, 7z o CAB.
I moderni file .exe di Windows portano comunemente una firma digitale Authenticode per verificare l'identità dell'editore, e il sistema operativo impone funzioni di sicurezza tra cui ASLR, DEP/NX e Control Flow Guard. Le importazioni dai file .dll vengono risolte al momento del caricamento dal loader PE di Windows. I file .exe provenienti da fonti sconosciute o non attendibili devono essere maneggiati con cura, perché comportano il rischio di infezione da malware se eseguiti.
Sicurezza e incolumità
RISCHIO: HIGHL'EXE è il vettore di malware n. 1 su Windows: può eseguire qualsiasi codice con i tuoi privilegi, quindi virus, trojan, ransomware e «crack/keygen» sono tipicamente file EXE. Checklist di sicurezza: esegui solo EXE dal fornitore ufficiale o da uno store affidabile; prima di eseguire, controlla la firma digitale (tasto destro → Proprietà → Firme digitali) - il software legittimo è firmato digitalmente e il nome dell'editore corrisponde; diffida molto degli EXE che arrivano via e-mail, chat o inclusi in download «gratuiti». Gli avvisi di Windows SmartScreen e dell'antivirus su un EXE non riconosciuto devono essere presi sul serio. Per ispezionare un download senza eseguirlo, aprilo come archivio in 7-Zip o scansionalo su VirusTotal. Attenzione alle doppie estensioni come «fattura.pdf.exe» e agli EXE camuffati con icone di documenti.
Dettagli del formato
in sintesiProgrammi che aprono file EXE
Dettagli tecnici
specifiche approfondite| Magic bytes | MZ (4D 5A) all'offset 0; la firma PE PE\0\0 (50 45 00 00) appare all'offset memorizzato nello stub MZ a 0x3C |
| Tipo MIME | application/vnd.microsoft.portable-executable |
| Supporto architettura | x86 (32-bit), x86-64/AMD64 (64-bit), ARM, ARM64; la macchina di destinazione è codificata nel campo Machine del COFF File Header |
| Varianti del sottostruttura | MZ (MS-DOS 16-bit), NE (16-bit Windows/OS/2 1.x), LX (OS/2 2.x 32-bit), LE (driver VxD), PE32 (Windows 32-bit), PE32+ (Windows 64-bit) |
| Layout delle sezioni PE | Le sezioni includono .text (codice eseguibile), .data (dati inizializzati), .rdata (dati in sola lettura), .rsrc (risorse) e .reloc (rilocazioni di base) |
| Entry point | Indirizzo virtuale relativo (RVA) della prima istruzione, memorizzato in AddressOfEntryPoint nell'Header Opzionale PE |
| Tabella delle importazioni | Elenca le DLL e le esportazioni di funzioni per nome o ordinale richieste dal binario; risolte dal loader di Windows all'avvio |
| Tabella delle esportazioni | Espone opzionalmente funzioni o simboli di dati per l'uso da parte di altri eseguibili o DLL; presente principalmente nelle DLL ma occasionalmente negli EXE |
| Sezione risorse (.rsrc) | Incorpora icone, bitmap, dialoghi, tabelle di stringhe, informazioni sulla versione e manifest dell'applicazione in un albero tipizzato/nominato/taggato per lingua |
| Firma del codice | Firma digitale Authenticode (PKCS#7/CMS) memorizzata nella Security Directory; convalidata da Windows SmartScreen, UAC e dal kernel al caricamento dei driver |
| Mitigazioni di sicurezza | I flag DllCharacteristics nell'Header Opzionale abilitano ASLR, DEP/NX, Control Flow Guard (CFG), SafeSEH e High-Entropy VA per i binari a 64 bit |
| Checksum PE | Campo CheckSum a quattro byte nell'Header Opzionale; imposto dal loader di Windows per i driver in modalità kernel e i file di sistema |
| Tipi di sottosistema | Windows GUI, console Windows (CUI), nativo (modalità kernel), applicazione EFI, driver del servizio di avvio EFI, driver di runtime EFI |
| Uso come archivio autoestraente | I pacchetti SFX incorporano un payload ZIP, 7z o CAB dopo lo stub PE; il file viene eseguito come un normale eseguibile e si decomprime automaticamente |
| Rilasciato | 1985 (MS-DOS MZ); PE format since Windows NT 3.1, 1993 |
| Specifica | learn.microsoft.com |