Quali sono gli strani caratteri sullo schermo quando si apre un file exe usando un editor di testo?
Il tuo editor di testo cerca di interpretare il contenuto del file eseguibile come una stringa di testo.
L'editor di testo nello screenshot sembra operare sotto l'assunzione che i file aperti debbano essere interpretati usando la codifica dei caratteri IBM code page 437, a giudicare dal disegno delle linee e dai blocchi grafici e altri caratteri speciali che ottieni.
Il file sembra contenere molti byte che, se effettivamente usati in un file di testo, sarebbero caratteri di controllo non stampabili. L'editor di testo che stai usando sembra visualizzare i caratteri di controllo non stampabili in blu, contrassegnandoli come sequenze di due caratteri - prima il segno del cursore ^, poi un carattere che identifica il codice effettivo. Per esempio, ^@ probabilmente segna un byte il cui valore è 0 mentre ^A segna un byte il cui valore è 1. ^D è 4, e così via.
Questa denotazione caret deriva dai giorni dei terminali di computer basati sul testo, che comunemente permettevano di produrre caratteri di controllo premendo il tasto Control e qualche altro carattere sulla tastiera. Caret è un altro simbolo per il tasto Control.
Più o meno nello stesso modo in cui oggi indichiamo le scorciatoie da tastiera con qualcosa come "Press Ctrl-K", in passato sarebbe stato comune usare l'abbreviazione "Press ^K". Il vostro editor di testo segue questa convenzione per mostrarvi la presenza di punti di codice nei dati che altrimenti rimarrebbero invisibili, poiché non c'è una forma di carattere corrispondente associata ad essi, e poiché sono destinati a funzioni di controllo, non ad essere visualizzati come tali. Ma l'editor di testo li visualizza in questo modo perché non sa cos'altro fare con loro. Non sono testo in quanto tale, e non rappresentano caratteri stampabili, ma esistono ancora nel file, nelle posizioni visualizzate. Il problema è che stai visualizzando dati binari non testuali in un editor di testo, quindi c'è poco altro che un editor di testo può fare. È pensato per modificare il testo, non per file binari non testuali casuali.
Ci sono alcuni pezzi di testo all'interno di quel file (i programmi eseguibili tipicamente contengono messaggi testuali e identificatori come testo leggibile) ma per la maggior parte, sono altri tipi di dati, come intestazioni in formato binario, o codice in linguaggio macchina, o alcuni dati numerici usati dal programma.
Se vuoi vedere questi dati binari grezzi in un formato più carino, puoi usare un editor esadecimale, come HxD su Windows:
Su Linux, puoi vedere il file usando lo strumento a riga di comando hexdump, così:
- hexdump -C filename.exe | less
…producing similar output.
This being a Windows executable, more information about the actual structure and format of the binary file can be found here:
what's in a .exe file?
Deciphering the structure of a Windows PE executable just by looking it as a hex dump is pretty involved though.
Se volete analizzare ulteriormente il file, scoprirete presto che vorrete scrivere uno strumento software personalizzato per questo, o usarne uno esistente, invece di cercare di capirlo nella vostra testa.
Tutti i file sui PC moderni sono essenzialmente solo flussi di byte a 8 bit, interpretati in modi diversi. Come avete notato, potete fare in modo che un editor di testo interpreti un file eseguibile come un file di testo, ma non avrà molto senso se interpretato in quel modo.
Lo stesso vale per l'interpretazione di qualsiasi altro formato di file. Non ha molto senso riprodurre immagini come audio, ma è possibile farlo se si vuole, per esempio caricando forzatamente un file JPEG in un editor audio come dati audio grezzi. Allo stesso modo, è possibile interpretare un file audio come un'immagine.
In entrambi i casi, si otterrà solo rumore, però - i dati non hanno senso quando vengono interpretati in un modo che non è mai stato pensato per essere interpretato. Con i formati di file, avete sempre bisogno di sapere in che formato sono i dati per dargli un senso. Altrimenti è buono come un'accozzaglia casuale di byte.
(A volte è possibile reingegnerizzare un formato di dati sconosciuto se è relativamente semplice e se si sa cosa dovrebbe rappresentare, e si può giocare con uno strumento che produce file in quel formato o fare alcune ipotesi educate e altre supposizioni, sperimentando un po' lungo la strada, ma alcuni formati sono abbastanza complessi da rendere questo approccio quasi impossibile)
Articoli simili
- Come rendere più grandi i caratteri e tutto ciò che è presente sullo schermo
- Come creare una password con 8 caratteri tra cui 1 lettera maiuscola, 1 carattere speciale e caratteri alfanumerici
- Ogni volta che apro un qualsiasi file .exe su Windows 7, appare un errore che dice 'Windows non riesce a trovare D:\System volume information.exe?
- Come si apre un file di testo di 30 GB su una macchina Linux?