Tools zum Reverse Engineering von Binärdateiformaten


82

Welche Tools stehen zur Dekodierung unbekannter Binärdatenformate zur Verfügung?

Ich kenne Hex Workshop und 010 Editor, beide unterstützen Strukturen. Diese sind für ein bekanntes festes Format in begrenztem Umfang in Ordnung, können jedoch nur schwer mit komplizierteren Formaten verwendet werden, insbesondere für unbekannte Formate. Ich schätze, ich suche ein Modul für eine Skriptsprache oder ein skriptfähiges GUI-Tool.

Zum Beispiel möchte ich in der Lage sein, eine Struktur innerhalb eines Datenblocks aus begrenzten bekannten Informationen zu finden, vielleicht einer magischen Zahl. Wenn ich eine Struktur gefunden habe, folge den bekannten Längen- und Versatzwörtern, um andere Strukturen zu finden. Wiederholen Sie dies dann rekursiv und iterativ, wo es Sinn macht.

Identifizieren Sie in meinen Träumen vielleicht sogar automatisch mögliche Offsets und Längen basierend auf dem, was ich dem System bereits gesagt habe!


1
Keine direkte Antwort auf Ihre Frage: Haben Sie nicht die ausführbaren Dateien, die mit diesen Binärdateien mit unbekannten Formaten funktionieren? Die Verwendung eines Ring3-Debuggers wie OllyDbg für das Reverse Engineering, das stattdessen so viel einfacher wäre, als zu versuchen, Dateiformate brutal zu erzwingen.
Daniel Sloof

Oh ja, eine der Apps, die ich der Frage "
Welches

In einigen Fällen habe ich ausführbare Dateien, die sie bis zu einem gewissen Grad verarbeiten. Manchmal handelt es sich bei den Dateien um ausführbaren Code (jedoch nicht in einem Standardformat), der möglicherweise eigene Dekodierungsroutinen enthält. Wir haben möglicherweise nur begrenzte Mengen an Teildokumentation als Ausgangspunkt. In anderen Fällen habe ich nichts.
Mat

Antworten:


22

Hier sind einige Tipps, die Ihnen in den Sinn kommen:

Aus meiner Erfahrung können interaktive Skriptsprachen (ich verwende Python) eine große Hilfe sein. Sie können ein einfaches Framework für binäre Streams und einige einfache Algorithmen schreiben. Dann können Sie Skripte schreiben, die Ihre Binärdatei aufnehmen und verschiedene Dinge überprüfen. Beispielsweise:

Führen Sie statistische Analysen zu verschiedenen Teilen durch. Zufällige Daten zeigen Ihnen beispielsweise, dass dieser Teil wahrscheinlich komprimiert / verschlüsselt ist. Nullen können eine Polsterung zwischen Teilen bedeuten. Verstreute Nullen können ganzzahlige Werte oder Unicode-Zeichenfolgen usw. bedeuten. Versuchen Sie, verschiedene Offsets zu erkennen. Versuchen Sie, Teile der Binärdatei in 2- oder 4-Byte-Ganzzahlen oder in Gleitkommazahlen umzuwandeln, drucken Sie sie aus und prüfen Sie, ob sie sinnvoll sind. Schreiben Sie einige Funktionen, die nach sich wiederholenden oder sehr ähnlichen Teilen in den Daten suchen. Auf diese Weise können Sie Header leicht erkennen.

Versuchen Sie, so viele Zeichenfolgen wie möglich zu finden, und versuchen Sie es mit verschiedenen Codierungen (c-Zeichenfolgen, Pascal-Zeichenfolgen, utf8 / 16 usw.). Dafür gibt es einige gute Werkzeuge (ich denke, dass Hex Workshop ein solches Werkzeug hat). Strings können dir viel sagen.

Viel Glück!


Hachoir aus der Antwort unten ist genau diese Art von Rahmen. Es enthält vordefinierte Felder: verschiedene Arten von Zeichenfolgen, Datumsangaben, Bits, Floats, Auffüllungen usw. Integrierte Parser können zusammen mit den Dokumenten als Beispiele verwendet werden.
Roolebo

15

Für Mac OS X gibt es ein neues großartiges Tool, das noch besser ist als mein iBored: Synaliyze It! ( http://www.synalysis.net/ )

Im Vergleich zu iBored eignet es sich besser für nicht blockierte Dateien und bietet gleichzeitig die vollständige Kontrolle über Strukturen, einschließlich der Skriptfähigkeit (mit Lua). Und es visualisiert auch Strukturen besser.


10

Tupni ; Meines Wissens nicht direkt aus Microsoft Research verfügbar, aber es gibt ein Dokument zu diesem Tool, das für jemanden von Interesse sein kann, der ein ähnliches Programm schreiben möchte (möglicherweise Open Source):

Tupni: Automatisches Reverse Engineering von Eingabeformaten ( @ ACM Digital Library )

Abstrakt

Jüngste Arbeiten haben gezeigt, wie wichtig das automatische Reverse Engineering von Protokoll- oder Dateiformatspezifikationen ist. Bei den von früheren Tools rückentwickelten Formaten wurden jedoch wichtige Informationen übersehen, die für Sicherheitsanwendungen von entscheidender Bedeutung sind. In diesem Artikel stellen wir Tupni vor, ein Tool, mit dem ein Eingabeformat mit einer Vielzahl von Informationen, einschließlich Datensatzsequenzen, Datensatztypen und Eingabeeinschränkungen, rückentwickelt werden kann. Tupni kann die Formatspezifikation über mehrere Eingaben verallgemeinern. Wir haben einen Prototyp von Tupni implementiert und ihn in 10 verschiedenen Formaten evaluiert: fünf Dateiformate (WMF, BMP, JPG, PNG und TIF) und fünf Netzwerkprotokolle (DNS, RPC, TFTP, HTTP und FTP). Tupni identifizierte alle Aufzeichnungssequenzen in den Testeingaben. Wir zeigen auch, dass durch Aggregation über mehrere WMF-Dateien Tupni kann eine vollständigere Formatspezifikation für WMF ableiten. Darüber hinaus demonstrieren wir die Nützlichkeit von Tupni anhand der umfangreichen Informationen, die für die Erzeugung von Signaturen für Sicherheitslücken mit null Tagen bereitgestellt werden, die mit früheren Reverse Engineering-Tools nicht möglich waren.



8

Mein eigenes Tool "iBored", das ich erst kürzlich veröffentlicht habe, kann Teile davon tun. Ich habe das Tool zum Visualisieren und Debuggen von Dateisystemformaten (UDF, HFS, ISO9660, FAT usw.) geschrieben und die Unterstützung für Suchen, Kopieren und später sogar für Struktur und Vorlagen implementiert. Die Strukturunterstützung ist ziemlich einfach und die Vorlagen sind eine Möglichkeit, Strukturen dynamisch zu identifizieren.

Das Ganze ist in einem Visual BASIC-Dialekt programmierbar, mit dem Sie Werte testen, bestimmte Blöcke lesen und alles.

Das Tool ist kostenlos, funktioniert auf allen Plattformen (Win, Mac, Linux), aber da es ein persönliches Tool ist, das ich gerade veröffentlicht habe, um es zu teilen, ist es nicht viel dokumentiert.

Wenn Sie es jedoch ausprobieren möchten und Feedback geben möchten, füge ich möglicherweise weitere nützliche Funktionen hinzu.

Ich würde es sogar als Open Source anbieten, aber da es in REALbasic geschrieben ist , bezweifle ich, dass sich viele Leute einem solchen Projekt anschließen werden.

Link: iBored Homepage


2
Klingt nach einem verdammt guten Projekt ... Wenn ich als Antivirenforscher gearbeitet habe, wäre das sehr praktisch gewesen. Stattdessen habe ich alles von Hand gemacht ... Ich werde es herunterladen und es mir ansehen. Danke dafür, ich habe eine Verwendung dafür. :)
LarryF

Sieht aus wie der Start eines netten Analysetools für Binärdateien, ist aber immer noch sehr festplattenzentriert (512-Byte-Blöcke sind ein
Steve Bennett

@SteveBennett: Es mag es, die Datei in gleich große Blöcke zu gruppieren, das stimmt, aber man kann die Blockgröße einfach über das Menü ändern. Und iBored kann auch die gesamte Datei als einen Block behandeln. Der einzige Nachteil ist, dass es Probleme mit großen Dateien gibt, da versucht wird, alle Daten in einer einzigen scrollbaren Blockansicht als einen Block anzuzeigen, was zu Leistungsproblemen führen kann.
Thomas Tempelmann

6

Ich benutze immer noch gelegentlich einen alten Hex-Editor namens AX, Advanced Hex Editor. Es scheint jetzt weitgehend aus dem Internet verschwunden zu sein, obwohl Google es immer noch für Sie finden sollte. Die letzte Version, die ich kenne, war Version 3.4, aber ich habe wirklich nur die kostenlose Version 2.1 für den persönlichen Gebrauch verwendet.

Die interessanteste Funktion, die ich am häufigsten zum Entschlüsseln verschiedener Spiel- und Grafikformate verwendet habe, ist der grafische Ansichtsmodus. Das zeigt Ihnen im Grunde nur die Datei mit jedem Byte, das in ein farbcodiertes Pixel umgewandelt wurde. Und so einfach das klingt, es hat meine Reverse-Engineering-Versuche manchmal viel einfacher gemacht.

Ich nehme an, dies mit dem Auge zu tun ist das Gegenteil von automatischer Analyse, und der grafische Modus wird nicht viel zum Auffinden und Verfolgen von Offsets verwendet ...

Die spätere Version enthält einige Funktionen, die Ihren Anforderungen entsprechen (Skripte, Regularity Finder, Grammatikgenerator), aber ich habe keine Ahnung, wie gut sie sind.


URL ist tot, vielleicht ist sie jetzt hier: advanced-hex-editor-axe.en.softonic.com
Steve Bennett

@Steve Danke für das Heads-up. Das ist der eine. Trotz aller virenfreien Versprechungen gab mir mein Virenscanner beim Versuch, ihn herunterzuladen, eine Virenwarnung, sodass ich mich nicht darum kümmerte. Ich habe meine Antwort umformuliert.
Mercator

5

Es gibt Hachoir , eine Python-Bibliothek, mit der Sie jedes Binärformat in Felder analysieren und dann die Felder durchsuchen können. Es gibt viele Parser für gängige Formate, aber Sie können auch eigene Parser für Ihre Dateien schreiben (z. B. wenn Sie mit Code arbeiten, der Binärdateien liest oder schreibt, schreibe ich normalerweise zuerst einen Hachoir-Parser, um eine Debugging-Hilfe zu erhalten). Es sieht jedoch so aus, als ob das Projekt mittlerweile ziemlich inaktiv ist.


(Link ist defekt)
Jacobq


0

Ein Ausschnitt meiner Antwort auf eine ähnliche Frage:

Ein Tool ist WinOLS , das für die Interpretation und Bearbeitung von Binärbildern von Computermotoren zur Verwaltung von Fahrzeugmotoren (hauptsächlich die numerischen Daten in ihren Nachschlagetabellen) entwickelt wurde. Es unterstützt verschiedene Endian-Formate (allerdings nicht PDP, glaube ich) und zeigt Daten in verschiedenen Breiten und Offsets an, definiert Array-Bereiche (Karten) und visualisiert sie in 2D oder 3D mit allen Arten von Skalierungs- und Offset-Optionen. Es hat auch einen heuristischen / statistischen automatischen Kartenfinder, der für Sie arbeiten könnte.

Es ist ein kommerzielles Tool, aber mit der kostenlosen Demo können Sie alles tun, außer Änderungen an der Binärdatei speichern und nicht benötigte Motorverwaltungsfunktionen verwenden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.