Ein Tool zum Extrahieren von Informationen aus IDA -Datenbanken. idbtool weiß, wie man Datenbanken aus allen IDA -Versionen verarbeitet, da V2.0, sowohl i64 als auch idb -Dateien. Sie können idbtool auch verwenden, um Informationen aus nicht abgelagten Datenbanken wiederherzustellen.
idbtool funktioniert ohne Veränderung mit IDA v7.0.
Mit IDBTOOL können Sie in Sekundenschnelle Tausende von .idb -Dateien durchsuchen.
Genauer gesagt: Auf meinem Laptop braucht es:
Das Laden einer ca. 5 GByte -IDB -Datei in IDA dauert ungefähr 45 Minuten. Während IDB3.H im Grunde überhaupt keine Zeit in Anspruch nimmt, nicht mehr als ein paar Millisekunden.
Es gibt zwei Versionen dieses Tools:
Einer in Python geschrieben
Einer in C ++ geschrieben
Beide Repositories enthalten eine Bibliothek, die zum Lesen .idb oder .i64 -Dateien verwendet werden kann.
Verwendung:
idbtool [options] [database file(s)]
-n oder --names listen alle benannten Werte in der Datenbank auf.-s oder --scripts listen alle in der Datenbank gespeicherten Skripte auf.-u oder --structs listen alle in der Datenbank gespeicherten Strukturen auf.-e oder --enums listen alle in der Datenbank gespeicherten Enums auf.--imports listet alle importierten Symbole aus der Datenbank auf.--funcdirs listen die in der Datenbank gespeicherten Funktionsordner auf.-i oder --info drucken einige allgemeine Informationen zur Datenbank.-d oder --pagedump -Dump Btree Page Tree Inhalt.--inc , --dec sind alle Datensätze in aufsteigender / absteigender Reihenfolge auf.-q oder --query suchen spezifische Datensätze in der Datenbank.-m oder --limit begrenzen die Anzahl der durch -q zurückgegebenen Ergebnisse.-id0 , -id1 Dump nur einen bestimmten Abschnitt.--i64 , --i32 geben IDBTOOL an, dass die angegebene Datei aus einer 64- oder 32-Bit-Datenbank stammt.--recover .--classify fasst die Knotennutzung in der Datenbank zusammen--dump Hexdump die ursprünglichen Binärdaten Abfragen müssen zuletzt in der Befehlszeile angegeben werden.
Beispiel:
idbtool [database file(s)] --query "Root Node;V"
Listet die Quelle Binary für alle in der Befehlszeile angegebenen Datenbanken auf.
Eine Abfrage ist eine Zeichenfolge mit dem folgenden Format:
Beispielabfragen:
Root Node;V -> Druckdatensatz, der den Binärnamen der Quelle enthält?Root Node -> Drucken den Namensdatensatz, der auf die Stamme zeigt>Root Node -> Druckt die ersten 10 Datensätze, die mit der Stammknoten -ID beginnen.<Root Node -> druckt die 10 Datensätze starten mit den Datensätzen vor dem RootNode..0xff000001;N -> druckt den RootNode -Nameneintrag aus.#1;N -> druckt den RootNode -Nameneintrag. Listen Sie den höchsten Knoten und den folgenden Datensatz in der Datenbank auf zwei verschiedene Arten auf, die erste: Start beim ersten Datensatz unten ffc00000 und listen Sie die nächsten auf. Die zweite: Beginnend beim ersten Rekord nach ffc00000 und auflistete die vorherigen:
--query "<#0xc00000" --limit 2 --inc -v--query ">#0xc00000" --limit 2 --dec -v Beachten Sie, dass dies der Nodeid im $ MAX NODE sein sollte.
Listen Sie die letzten beiden Datensätze auf:
--limit 2 --dec -v Listen Sie die ersten beiden Datensätze auf, den $ MAX LINK und $ MAX NODE Records:
--limit 2 --inc -vEs gibt verschiedene Methoden, um alle Datensätze in der Datenbank zu drucken. Dies kann nützlich sein, wenn Sie mehr von IDAs Interna untersuchen möchten. Kann aber auch nützlich sein, um Daten aus beschädigten Datenbanken wiederherzustellen.
--inc , --dec kann verwendet werden, um alle B-Tree-Datensätze entweder in Vorwärts- oder Rückwärtsrichtung aufzählen.-v hinzu, um eine schönere Taste/Wert -Ausgabe zu erhalten--id0 geht durch den Seitenbaum anstelle des Datensatzbaums und druckt den Inhalt jeder Seite--pagedump überspringen die Datei linear, wodurch auch Informationen auf gelöschten Seiten angezeigt werden. Als IDA oder Ihr Computer während der Arbeit an einer Demontage abgestürzt ist und Sie die Datenbank noch nicht gespeichert haben, haben Sie einige Dateien mit Erweiterungen wie .id0 , .id1 , .nam usw.
Diese Dateien sind die ausgepackte Datenbank, ich nenne sie naked Dateien.
Verwenden der Optionen --filetype und --i64 oder --i32 können Sie diese naked Dateien einzeln inspizieren. Oder verwenden Sie die Option --recover , um sie gemeinsam als vollständige Datenbank anzuzeigen. idbtool wird automatisch herausfinden, welche Dateien zusammengehören würden.
idbtool kann die Bitze der Datenbank aus einer .id0 -Datei aus den anderen herausfinden.
Die Datei idblib.py enthält eine Bibliothek.
Willem Hengeveld [email protected]