Il formato Windows Portable Executable ha le sue piccole sfumature, quindi ecco una guida rapida su come funzionano.

Un Windows Portable Executable (PE) è il formato di file nativo di Windows per eseguibili e altri tipi di file binari. Il formato file PE è progettato per essere indipendente dalla piattaforma, quindi può essere utilizzato su qualsiasi computer Windows esegue la stessa versione del sistema operativo e l'architettura del processore per cui era il file compilato.

Quindi, analizziamo il formato di file di Windows PE e scopriamone la struttura e i componenti costitutivi.

Che cos'è un file eseguibile portatile di Windows?

Prima di esplorare il formato Windows Portable Executable, è importante chiarire le basi. Facciamo un passo indietro e scopriamo il concetto alla base di Windows PE: COFF.

Quando si compila il codice sorgente in un programma, il compilatore genera un file oggetto (.obj). Questo file oggetto contiene le istruzioni per il computer in formato binario.

COFF o Common Object File Format è un insieme standardizzato di convenzioni per rappresentare le istruzioni binarie. COFF aiuta a mantenere la compatibilità multipiattaforma poiché tutti i formati di file COFF seguono lo stesso insieme di regole e convenzioni per l'organizzazione di codice e dati. Sebbene COFF sia stato originariamente sviluppato per l'uso su sistemi *NIX, ora è onnipresente su tutte le piattaforme.

instagram viewer

Il formato di file Windows Portable Executable (PE) è una modifica di COFF ed è stato sviluppato per essere utilizzato esclusivamente su Sistemi Windows a 32 e 64 bit. A differenza di COFF, che fornisce un formato standardizzato per i file oggetto, Windows PE fornisce un formato standardizzato per eseguibili e file di libreria.

Contiene sezioni e intestazioni che forniscono informazioni sull'eseguibile in questione e aiuta il caricatore di sistema a gestire i dati relativi all'eseguibile. Le intestazioni in un file PE aiutano il caricatore di sistema a mappare il file sulla memoria, risolvere dipendenze come esportazioni/importazioni API, gestire le risorse e preparare il file per l'esecuzione.

Linux ha anche una propria iterazione del COFF; si chiama Executable Link File o in breve, binario ELF. Puoi verificare se un file è ELF o meno eseguendo il file comando file su Linux con il nome del file come primo argomento.

La struttura di un eseguibile portatile di Windows

Il formato di file Portable Executable è costituito da diversi componenti, ciascuno con uno scopo specifico. Questi componenti includono:

  • Intestazioni di sezione, che descrivono il layout e le caratteristiche di ciascuna sezione del file Le sezioni stesse, che contengono codice eseguibile, dati e risorse.
  • L'intestazione PE, che fornisce informazioni sulla struttura generale del file e sui requisiti.
  • L'intestazione DOS, che include un piccolo programma che viene eseguito quando il file viene eseguito su un sistema DOS.
  • E infine, le intestazioni della sezione PE, che descrivono la posizione e gli attributi di ciascuna sezione all'interno del file.

Nel complesso, questi componenti lavorano insieme per creare un formato strutturato che consente al sistema operativo di caricare, eseguire e gestire correttamente il codice eseguibile contenuto nel file. Impariamo esattamente cosa fa ogni componente.

Intestazione DOS

La prima parte di un file PE è chiamata intestazione DOS. Una piccola quantità di codice eseguibile è memorizzata nell'intestazione DOS che può essere eseguita anche su una macchina DOS.

Questo codice è anche chiamato stub MS-DOS e viene utilizzato per lanciare un messaggio di errore sui sistemi che non supportano il file PE.

Intestazione PE

L'intestazione Portable Executable fornisce informazioni sull'eseguibile, come quanto è grande il file, dove si trovano le diverse parti e quali risorse necessita l'eseguibile. L'intestazione PE contiene anche informazioni sul tipo di eseguibile, indipendentemente dal fatto che si tratti di un file File .DLL di Windows o un file .EXE.

Intestazioni di sezione

Le sezioni sono implementate per organizzare i molti componenti di un eseguibile come codice, dati e risorse come stringhe di testo, immagini, ecc. Le intestazioni di sezione includono informazioni relative alle dimensioni e alla posizione di ciascuna sezione, nonché eventuali contrassegni associati.

I flag associati a ciascuna intestazione di sezione possono indicare vari attributi della sezione, ad esempio se è eseguibile, scrivibile o leggibile. Questi flag aiutano il sistema operativo a caricare e gestire correttamente il contenuto di ciascuna sezione durante l'esecuzione del programma.

Sezioni

Le sezioni stesse comprendono il codice, i dati e le risorse reali dell'eseguibile. Ogni segmento è allineato a un certo limite di memoria e ha il proprio set di attributi che influenzano il modo in cui il sistema operativo lo gestisce.

Ora sai tutto sul formato di file eseguibile portatile di Windows

Windows Portable Executable è un formato di file robusto e versatile utilizzato per produrre un'ampia varietà di applicazioni Windows e componenti di sistema. Comprendendo la struttura del formato di file PE, gli sviluppatori possono creare app efficienti che sfruttano le caratteristiche distintive di Windows.

Oltre ad acquisire una comprensione approfondita della piattaforma su cui verrà eseguita la tua app, seguendo alcuni buoni standard pratiche di codifica, sarai in grado di massimizzare la qualità dell'applicazione indipendentemente dalla piattaforma su cui viene eseguita SU.