Come leggere un file Hex
Introduzione
In svariate occasioni, sopratutto quando in ambito di programmazione informatica si vuole esaminare accuratamente il contenuto di un file, è necessario scendere in un linguaggio a più basso livello. In altre parole, quello che si vuole fare è esaminare il contenuto di un file senza il filtro rappresentato dalla visualizzazione da parte di un editor di testo quale Notepad, Write o addirittura Word. Infatti tutti questi programmi, seppur con qualche restrizione, sono in grado di gestire adeguatamente dei file di testo, ma se il file è binario o contiene dei caratteri di controllo non normalmente visualizzabili allora tutto ciò che si ottiene è solo una vista parziale del file. In questo caso ci vengono in aiuto i programmi di Hex editor, ossia programmi in grado di creare e manipolare file in formato Hex (dove la dicitura "Hex" sta per esadecimale). Essi utilizzano 16 simboli, di cui, i primi 10 caratteri sono numeri che vanno da 0 a 9, mentre per gli ultimi 6 si utilizzano le lettere che vanno da A ad F.
Tramite l?estensione Hex, quindi, si può leggere un file binario in formato testo ASCII (American Standard Code for Information Interchange) o esadecimale, anche se superiore ai 64Kb di grandezza o qualsiasi altro file di cui vogliamo conoscerne il contenuto più approfonditamente. Il programmatore, in ambiente Hex, è in grado di modificare i singoli byte e di effettuare una ricerca, semplicemente usando sequenze alfanumeriche. Un Hex editor può, inoltre, analizzare file di notevoli dimensioni, rendendoli più leggeri e manovrabili.
In questo tutorial vi illustreremo come leggere ed interpretare un file Hex. Le applicazioni, una volta che avrete imparato a leggere i file Hex sono svariate. Potrete tradurre delle intere stringhe nei vari linguaggi di programmazione, modificare file binari direttamente dal codice, oppure, se avete necessità di recuperare file corrotti che non vengono più aperti, basterà capire dove e quali byte andare a modificare per leggere nuovamente i vostri dati.
Vogliamo ricordare che se desiderate modificare un eseguibile di software proprietario, dovete verificare se la licenza del programma in questione permetta un'azione simile, altrimenti quello che state facendo è illegale.
È bene sapere che questa guida è indicata prevalentemente per chi ha delle conoscenze base di architettura degli elaboratori e di linguaggio macchina. Buona lettura.
Occorrente
- Un file Hex
- Un Hex editor
- Conoscenza adeguata dei caratteri esadecimali
- Computer
Scaricare un Hex editor
La prima cosa da fare per poter leggere i file Hex è proprio quella di scaricare un programma di Hex editor. In circolazione ne esistono di diversi tipi e per le esigenze più disparate. Vi segnaliamo in particolare Hexed, un Hex editor che permetterà di lavorare con i vostri file Hex senza scaricare alcun software sul vostro PC, tutto quello che dovrete fare è cliccare su https://hexed.it/ e caricare il vostro file Hex. Un altro software, molto in uso per i sistemi Microsoft, è il seguente: http://www.chmaas.handshake.de/delphi/freeware/xvi32/xvi32.htm#download un Hex editor freeware disponibile in diverse versioni e capace di aprire senza alcuna difficoltà file binari di dimensioni fino a 2 Gb.
Per i sistemi Linux basati su Debian è sufficiente installare il pacchetto "hexedit" da terminale con la dicitura "sudo apt-get install hexedit" e avviate, sempre da terminale, "hexedit" per poter iniziare ad usare questo programma.
Per chi usa invece Mac OS vi segnaliamo https://ridiculousfish.com/hexfiend/ un editor veloce, leggero e molto semplice da installare.
Leggere i file Hex
Una volta scaricato il vostro Hex editor dovrete avere a disposizione il vostro file che desiderate ispezionare. Qualsiasi tipo di Hex editor stiate utilizzando dovete uploadare il vostro file dal menù "Apri". All'apertura vi accorgerete che ogni file Hex è composto da sei parti principali, indicate nella seguente sequenza:
: LLAAAATTDDCC
In questa rappresentazione i due punti indicano l?inizio del record. I due valori esadecimali (LL), mostrano il numero di byte presenti nella riga. Ricordate che il numero massimo dei byte concessi è 255 (0xFF). Quelli più usati sono 16 byte (0x10) e 32 byte (0x20). AAAA segnala la posizione iniziale su cui scrivere i byte. L?indirizzo di base è uguale a zero di default. Si può modificare inserendo il record desiderato. TT indica il tipo di record, con valori che vanno da 00 a 05. DD contengono il valore del byte (basso/alto) nei dati, sempre rappresentato da cifre esadecimali. Il dispositivo di programmazione utilizza CC per effettuare una verifica di correttezza dei dati ricevuti.
Imparare la struttura dei record
Nei file Hex è possibile inserire ben 5 tipi di record, indicati con i corrispondenti simboli. 00 è un record che contiene dati. 01 indica la fine del file. Questo va posizionato nell'ultima riga del file ed inserito solo una volta. 02 contiene un indirizzo di base. Questo, moltiplicato per 16 ed aggiunto all'indirizzo successivo di ogni record, permette di tracciare l?indirizzo di partenza dei dati. 03 per processori 80X86, raffigura il contenuto iniziale dei registri IP. 04 permette di potenziare l?indirizzo a 32 bit, fino a 4Gb di memoria (ove la vostra memoria lo permetta). 05 raffigura il valore bit caricato nel registro EIP (Extended Istruction Pointer). Questo registro dice al computer dove andare per eseguire il prossimo programmo e controllare il flusso dei programmi già in esecuzione.
Conclusioni
Ecco un esempio per comprendere più chiaramente l'interpretazione di un record all'interno di un file Hex.Supponete di trovarvi di fronte alla seguente sequenza di dati:
:0B00100061A7
Secondo la corretta interpretazione del record Hex, comprenderete che si tratta di una stringa a 0 byte (0B). Si posiziona in indirizzi successivi a 0010 e contiene dati (00).
Il valore dei byte, nei dati, equivale a 61 e si utilizza A7 per assicurarsi dell?esattezza dei dati inviati. Al momento l'idea di base potrebbe risultare piuttosto complessa ma garantiamo che con una buona dose di pratica riuscirete a leggere e modificare i file che vi interessano (sempre nel rispetto delle licenze dei programmi). Con la speranza che questa guida vi possa essere stata utile vi auguriamo buon lavoro con i programmi di Hex editor.
Guarda il video

Consigli
- Prima di effettuare qualsiasi modifica, fate una copia del vostro file Hex, così da non danneggiare l’originale, in caso di imprevisti.
- Fate molta pratica nella lettura dei record, in modo da identificare a prima vista quali sono i byte che vi interessa esaminare