Domanda

Ho un file binario. Non so come sia formattato, so solo che proviene da un codice Delphi.

Esiste un modo per analizzare un file binario?

Esiste uno "schema"? analizzare e deserializzare il contenuto binario di un file con formato sconosciuto?

È stato utile?

Soluzione

Prova questi:

  1. Deserializza i dati : analizza come sono stati compilati i tuoi exe (prova File Analyzer ). Prova a deserializzare i dati binari con la lingua scoperta. Quindi serializzalo in un formato xml (indipendente dalla lingua) che ogni linguaggio di programmazione possa comprendere
  2. Analizza i dati binari : prova a salvare varie versioni del file con poche variazioni e usa un programma diff per analizzare il significato di ogni bit con un editor esadecimale. Usalo insieme alle tecniche di hacking binario (come Come decifrare un formato di file binario di Frans Faase )
  3. Reverse Engineer l'applicazione : prova a ottenere il codice utilizzando gli strumenti di reverse engineering per il linguaggio di programmazione utilizzato per creare l'app (disponibile con Analizzatore di file ). Altrimenti utilizzare lo strumento di analisi del disassemblatore come Disassemblatore IDA Pro

Altri suggerimenti

Per il mio progetto hobby ho dovuto decodificare alcuni vecchi file di gioco. I miei approcci erano:

  • Avere un buon editor esadecimale.
  • Cerca parole leggibili nel file binario. Nota come è la loro distribuzione. Se la distanza tra loro è costante, sai che si tratta di un elenco.
  • Cerca 2-3 zeri conseguenti. Potrebbe indicare un valore int32.
  • Alcune password potrebbero essere puntatori nel file.
  • Prova a identificare gli schemi ricorrenti nel file.
  • Vedere molti C0-CF potrebbe indicare dati compressi RLE.

Il reverse engineering di un file binario quando si ha un'idea di ciò che rappresenta è un processo che richiede molto tempo. Se non hai idea di cosa sia, sarà ancora più difficile.

È possibile però, ma devi avere una ragione abbastanza buona per farlo.

Il primo passo sarebbe quello di aprirlo in un editor esadecimale di tua scelta e vedere se riesci a trovare del testo inglese che ti indichi nella direzione di ciò che il file dovrebbe rappresentare. Da lì, Google "file binari di Reverse Engineering", ci sono persone molto più informate di me che hanno scritto guide al riguardo.

Le stringhe " programma da GNU binutils è molto utile. Stamperà le stringhe di caratteri stampabili in un file, abbastanza spesso dando un'idea di cosa contiene un file o di un programma.

Se i dati rappresentano oggetti Delphi serializzati, è necessario iniziare a leggere sul processo di serializzazione Delphi. In tal caso, penso che la soluzione migliore sarebbe caricarla utilizzando Delphi e continuare l'analisi dall'IDE. Alcune informazioni sulla serializzazione di Delphi sono disponibili qui .

EDIT: se il file contiene oggetti delphi serializzati, allora dovresti scrivere un piccolo programma delphi che lo carica e " convert " i dati stessi a qualcosa di neutro, come xml. Se riesci a farlo, dovresti controllare e vedere se delphi supporta la serializzazione su XML. Quindi, è possibile accedere a tali oggetti da qualsiasi lingua.

Ho sviluppato Hexinator (Window & amp; Linux) e Synalyze It! (macOS) esattamente per questo scopo. Queste applicazioni ti permettono di vedere i file binari come in altri editor esadecimali ma puoi anche creare una "grammatica" con le specifiche di un formato di file binario. La grammatica contiene tutti i blocchi predefiniti e viene utilizzata per analizzare automaticamente il file.

In questo modo è possibile mantenere le conoscenze acquisite nell'analisi e applicarle contemporaneamente a più file. Puoi anche codificare a colori i frammenti dei formati di file per una rapida panoramica nell'editor esadecimale. Schermata di Synalyze It! Pro I risultati dell'analisi vengono visualizzati in una vista ad albero in cui è anche possibile modificare facilmente i file (applicando endianness et cetera).

Il file " unix " unix il comando è davvero utile - non so se c'è qualcosa di simile in Windows. Lo esegui in questo modo:

file myfile.ext

E sputa una descrizione testuale basata sui numeri magici e sui dati in essi contenuti.

Probabilmente è contenuto in cygwin .

Se hai accesso all'applicazione che crea il file, puoi applicare le modifiche all'applicazione, quindi salvare il file e vedere gli effetti (Tieni presente che i numeri sono probabilmente memorizzati in little endian ):

  • Per prima cosa creare il file ripetutamente. Se i file non sono binari uguali, la data / ora corrente viene probabilmente memorizzata nell'area in cui si verificano differenze hte.
  • Forse vuoi ripeterlo con il software in esecuzione in ambienti diversi, per vedere se la versione del sistema operativo ecc. è memorizzata, ma questo è piuttosto insolito.
  • Successivamente puoi provare a cambiare singole variabili e creare diversi file che differiscono solo nel valore di questa variabile. Questo ti aiuta a identificare dove è memorizzata questa variabile.
  • In questo modo puoi anche escludere le variabili che non sono memorizzate nel file: se le modifichi, ma i file creati sono identici, non vengono memorizzati.

Per testare le ipotesi che hai elaborato con i passaggi precedenti, modifica uno dei file e lascia che l'applicazione lo legga.

Se non hai accesso all'applicazione stessa, ti suggerisco di dimenticartene e trovare un altro modo per risolvere il tuo problema. C'è un'altissima probabilità che sarà più veloce ...

Se file non fornisce una risposta significativa, potresti provare TRiD di Marco Pontello per determinare se i tuoi dati sono archiviati in un formato noto.

Conosci il programma che lo utilizza? In tal caso, puoi agganciare i programmi che scrivono alla funzione file e avere un'idea di quali dati sta scrivendo, la dimensione dei dati e dove.

Ulteriori informazioni: http://www.codeproject.com/KB/DLL/ Win32APIHooking_Trouble.aspx

Ottieni l'applicazione Delphi e aprila in Versione freeware IDA Pro , e trova dove scrive il file e decodifica il modo in cui scrive il file in quel modo.

A meno che non sia il testo del piano.

A differenza dei tradizionali editor esadecimali che visualizzano solo i byte esadecimali non elaborati di un file, l'editor 010 può anche analizzare un file in una struttura gerarchica utilizzando un modello binario. I risultati dell'esecuzione di un modello binario sono molto più facili da comprendere e modificare rispetto all'utilizzo dei soli byte esadecimali non elaborati.

http://www.sweetscape.com/010editor/

Prova ad aprirlo in un editor esadecimale e analizzalo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top