decompilare

Decompilare significa convertire il codice del programma eseguibile (pronto per l'esecuzione) (a volte chiamato codice oggetto) in una qualche forma di linguaggio di programmazione di livello superiore in modo che possa essere letto da un essere umano. La decompilazione è un tipo di ingegneria inversa che fa l'opposto di ciò che fa un compilatore. Lo strumento che esegue questa operazione è chiamato decompilatore. Uno strumento simile, chiamato disassembler, traduce il codice oggetto in linguaggio assembler. Esistono diversi motivi per la decompilazione o il disassemblaggio, come la comprensione di un programma, il ripristino del codice sorgente a scopo di archiviazione o aggiornamento, la ricerca di virus, il debug di programmi e la traduzione di codice obsoleto. La decompilazione è stata utilizzata per la prima volta negli anni '1960 per facilitare la migrazione di un programma da una piattaforma all'altra.

La decompilazione non sempre riesce per una serie di motivi. Non è possibile decompilare tutti i programmi e dati e codice sono difficili da separare, perché entrambi sono rappresentati in modo simile nella maggior parte dei sistemi informatici attuali. I nomi significativi che i programmatori danno alle variabili se alle funzioni s (per renderle più facilmente identificabili) non sono solitamente memorizzati in un file eseguibile, quindi non vengono solitamente recuperati durante la decompilazione.

La decompilazione è talvolta utilizzata in modo non etico, per riprodurre il codice sorgente per il riutilizzo o l'adattamento senza il permesso del detentore del copyright. I programmi possono essere progettati per resistere alla decompilazione attraverso mezzi protettivi come l'offuscamento.