TDUMP: Das Hilfsprogramm für Dateien-Dump

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Befehlszeilenhilfsprogramme - Index

TDUMP.EXE erzeugt einen Datei-Dump, der die Struktur einer Datei darstellt.

TDUMP teilt eine Datei ihrer Struktur nach auf und bestimmt anhand der Dateinamenserweiterung das Ausgabeformat. TDUMP erkennt viele Dateiformate, einschließlich EXE-, OBJ- und LIB-Dateien. Falls TDUMP die Dateinamenserweiterung nicht erkennt, wird ein Hex-Dump der Datei ausgegeben. Sie können das Ausgabeformat beim Aufruf des Programms mit Hilfe der TDUMP-Befehlszeilenoptionen einstellen.

Da TDUMP die innere Struktur einer Datei untersuchen kann, sehen Sie nicht nur, was in den Dateien enthalten ist, sondern auch wie diese aufgebaut sind. Außerdem kann mit TDUMP die Integrität einer Datei getestet werden, da TDUMP die Struktur der Datei auf Übereinstimmung mit der Dateinamenserweiterung prüft.

TDUMP kann seine Eingabe aus der Standardeingabe (stdin) durch Umleitung (mit dem Symbol "größer als" >) oder durch Verwendung von Pipes (vertikale Linie |) lesen.

TDUMP64.EXE ist das Hilfsprogramm für den Dateien-Dump für 64-Bit-Windows. Es verfügt über dieselben Optionen und dieselbe Syntax wie TDUMP.EXE.

Befehlszeilensyntax

TDUMP [<options>] <inputfile> [<listfile>]

Im obigen Code ist:

  • <inputfile> die Datei, deren Struktur dargestellt werden soll.
  • <listfile> ein optionaler Name für die Ausgabedatei (dafür kann auch der Umleitungsbefehl > verwendet werden).
  • <options> zusätzliche Befehlszeilenoptionen für TDUMP.


Um die Hilfe für die Befehlszeile anzuzeigen, geben Sie Folgendes ein:

tdump

oder

tdump -?

um die erweiterte Hilfe für die Befehlszeile anzuzeigen.


Befehlszeilenoptionen

Als Präfixzeichen vor den Optionen können Sie entweder / oder - verwenden. Die beiden folgenden Befehle sind identisch:

TDUMP -e1 -v demo.exe
TDUMP /el /v demo.exe

TDUMP.EXE unterstützt die in der folgenden Tabelle aufgeführten Befehlszeilenoptionen:

Befehlszeilenoptionen für TDUMP

Option Beschreibung
-?

Zeigt die erweiterte Hilfe für die Befehlszeile an.

-a
-a7

TDUMP passt die Ausgabe automatisch dem angegebenen Dateityp an. Sie können jedoch eine ASCII-Darstellung erzwingen, indem Sie die Optionen -a oder -a7 angeben.

  • -a – Erzeugt eine ASCII-Datei, die den Offset und den Inhalt in darstellbaren ASCII-Zeichen wiedergibt. Ist ein Zeichen nicht darstellbar (zum Beispiel die Steuerzeichen), wird ein Punkt ausgegeben.
  • -a7 – Wandelt die ASCII-Zeichen mit Werten über 128 in die entsprechenden 7-Bit-ASCII-Äquivalente um. Dies ist zur Darstellung von Dateien nützlich, in denen höhere ASCII-Zeichen als Flags verwendet werden.
-b#

Ermöglicht, die Anzeige von Informationen ab einem bestimmten dezimalen #-Offset (verwenden Sie für Hex das Präfix 0x). In folgendem Beispiel wird mit der Darstellung von MYFILE ab dem Offset 100 begonnen:
TDUMP -b100 MYFILE

-C

Bewirkt, dass TDUMP in COFF-Formatdateien (.OBJ und .LIB) gefundene Informationen ausgibt. Diese Option wird beim Linken mit OBJ- und LIB-Dateien von Microsoft eingesetzt. (Nur COFF)

-d

Bewirkt, dass TDUMP in der OBJ-Datei enthaltene 32-Bit-Debug-Informationen von C++Builder ausgibt. Wird diese Option nicht gesetzt, werden nur Rohdaten angezeigt. (Nur OMF)

-e
-ea[:v]
-ed
-ee[=x]
-eh
-eiID
-el
-em[=x]
-em.[x]
-ep
-er
-es[=x]
-et
-ex

Alle diese Optionen zwingen TDUMP, die Datei als ausführbare Datei (EXE/DLL) darzustellen.
Bei einer ausführbaren Datei werden zunächst die in einer Datei enthaltenen Informationen ausgegeben, die das Betriebssystem beim Laden einer Datei verwendet. Falls symbolische Debug-Informationen zur Verfügung stehen, werden sie von TDUMP angezeigt.
TDUMP kann ausführbare Dateien für DOS, für das NEW-Format (EXE-und DLL-Dateien für 16-Bit-Windows und OS/2), für das lineare Format und für das Portable Executable (PE)-Format, das von 32-Bit-Windows (Windows 95/98/Me, Windows NT/2000/XP usw.) verwendet wird, darstellen.

  • -e – Zeigt die Datei als ausführbare Datei (EXE/DLL, DOS, Win16, OS/2, PE) an.
  • -ea[:v] – Definiert, wie Exporte angezeigt werden. (Nur PE)
    • -ea – Zeigt alle Exporte unsortiert an.
    • -ea:v – Zeigt alle Exporte unsortiert nach RVA an.
Standardmäßig werden nur benannte Exporte nach Namen sortiert ausgegeben.
  • -ed – Deaktiviert EXE-Debug-Informationen.
  • -ee[=x] – Führt Exporte nur aus EXE/DLL-Dateien auf (mit dem optionalen x werden nur Übereinstimmungen aufgelistet). (Nur PE)
  • -eh – Deaktiviert die Anzeige von EXE-Headern. (Nur Elf)
  • -eiID – Bezieht nur EXE-Tabellen-IDs ein (HDR, OBJ, FIX, NAM, ENT). (Nur PE)
  • -el – Unterdrückt die Ausgabe von Zeilennummern.
  • -em[=x] – Führt Importe nur aus EXE/DLL-Dateien auf (mit dem optionalen x werden nur Übereinstimmungen aufgelistet). (Nur PE)
  • -em.[x] – Führt importierte Module nur aus EXE/DLL-Dateien auf (mit dem optionalen x-Suchstring). (Nur PE)
  • -ep – Deaktiviert die Anzeige von EXE PE-Headern. (Nur PE)
  • -er – Unterdrückt die Ausgabe der Adressverschiebungstabelle.
  • -es[=x] – Hex-Dump von Programmabschnitten. Mit x geben Sie den gewünschten Abschnitt an. (Nur Elf)
  • -et – Deaktiviert EXE-Symboltabellen. (Nur Elf)
  • -ex – Unterdrückt die Ausgabe der Informationen für das NEW-Format von ausführbaren Dateien. Das bedeutet, dass TDUMP nur Informationen für die DOS-"Stub"-Programme anzeigt.
-h[O|=x]

Bewirkt die Ausgabe der Dump-Datei im Hexadezimalformat.

  • O – kann Folgendes sein:
    • r – Gibt Offsets relativ zum Start-Offset aus.
    • a – Gibt absolute Offsets aus.
  • =x – Offset am Dateianfang (entspricht -b#).

Das Hexadezimalformat besteht aus einer Spalte mit Offsetzahlen, 16 Spalten mit Hexadezimalzahlen und den ASCII-Entsprechungen (nicht darstellbare ASCII-Zeichen werden als Punkte angezeigt).
Wenn TDUMP die Dateinamenserweiterung der Eingabedatei nicht erkennt, wird die Datei standardmäßig im Hexadezimalformat ausgegeben (es sei denn, eine Option erzwingt ein anderes Format).

-iID

Legt die zu verwendende ID der Debug-Tabellen fest. ID=[?/abc...rst]. (Nicht Elf)

-xID

Legt die auszuschließende ID der Debug-Tabellen fest. ID=[?/abc...rst]. (Nicht Elf)

-l
-le[=x]
-li[=x]

Zeigt die Ausgabedatei als Bibliotheksdatei (LIB) an. (Nur OMF LIB)
Eine Bibliotheksdatei besteht aus einer Sammlung von Objektdateien (bei der Option -o finden Sie Informationen zu Objektdateien).
Der Bibliotheksdatei-Dump gibt bibliotheksspezifische Informationen, die Objektdateien und deren Datensätze aus.

  • -li – Veranlasst TDUMP, eine Kurzausgabe der IMPDEF-Einträge der Importbibliothek anzuzeigen. Sie können auch einen Such-String mit der folgenden Syntax angeben:
-li=<String>
Diese Befehlszeile
tdump -li=codeptr import32.lib
liefert beispielsweise folgende Ausgabe:
Impdef:(ord) KERNEL32.0336=ISBADCODEPTR
Diese Ausgabe zeigt, dass die Funktion über ihren Ordinalwert exportiert wird. Der Ordinalwert ist 336 (dezimal). Zusätzlich wird der Modul- und der Funktionsname ausgegeben.
Wenn Sie den folgenden Befehl eingeben:
tdump -li=walk import32.lib
zeigt TDUMP Folgendes an:
Impdef:(name) KERNEL32.????=HEAPWALK
Die Ausgabe zeigt, dass die Funktion über ihren Namen exportiert wird.
  • -le – Veranlasst TDUMP, bei der Ausgabe von OBJ-Dateien eine Kurzform der EXDEF-Einträge anzuzeigen. Sie können auch einen Such-String mit der folgenden Syntax angeben:
-le=<String>
-lm[=x]

Zeigt einen Dump der Member an (x führt nur Übereinstimmungen auf). (Nur ELF LIB)

-lh

Zeigt eine Liste der Member im Archiv an. (Nur ELF LIB)

-lt

Zeigt exportierte Symbole im Archiv an. (Nur ELF LIB)

-m

Belässt die C++-Namen, die in Objektdateien, in ausführbaren Dateien oder in den Debugger-Symbolinformationen aufgeführt sind, im verkürzten Format. Über diese Option kann daher ermittelt werden, wie der C++-Compiler den Namen einer bestimmten Funktion und deren Argumente verkürzt. (Nicht Elf)

-M

Zeigt die MACH-Datei an. (Nur MACH)

-ns

Deaktiviert die Unterstützung für die Umleitung der Standardeingabe (stdin).

-o
-oc
-oiID[=x]
-oxID[=x]

Diese Optionen veranlassen TDUMP, die Datei als Objektdatei (OBJ) anzuzeigen. (Nur OMF)

  • -o – Zeigt die Datei als Objektdatei (OBJ) an. Die Ausgabe für eine Objektdatei enthält eine Beschreibung der Befehlsdatensätze, die zur Übergabe der Daten und Befehle an den Linker dienen und die Informationen darüber enthalten, wie der Linker die EXE-Datei erzeugen soll. Das Darstellungsformat zeigt datensatzweise jeden einzelnen Datensatz mit den dazugehörigen Daten an.
  • -oc – Veranlasst TDUMP, für jeden Datensatz einen Prüfsummentest (cyclic redundancy test, CRC) durchzuführen. Die mit dieser Option erzeugte Darstellung unterscheidet sich nur dann von derjenigen der Option -o, wenn eine CRC-Prüfung ein falsches Ergebnis liefert (d.h. der von TDUMP errechnete CRC-Wert entspricht nicht dem Wert des CRC-Byte im geprüften Datensatz).
  • -oi<ID> – Nimmt nur angegebene OMF-Datensatztypen in die Ausgabe für das Objektmodul auf.
-ox<ID>[=x] – Schließt angegebene OMF-Datensatztypen aus der Ausgabe für das Objektmodul aus.
Ersetzen Sie <ID> durch den Namen des Datensatzes, der angezeigt werden soll. Zum Beispiel:
TDUMP -oiPUBDEF MYMODULE.OBJ erzeugt eine Ausgabe für MYMODULE.OBJ, die nur die PUBDEF-Datensätze anzeigt.
Die Optionen -ox und -oi erleichtern die Suche nach Fehlern, die während des Linkens auftreten. Vor allem durch die Kontrolle der Schreibweise und der Groß- und Kleinschreibung der EXTDEF- und PUBDEF-Symbole lassen sich viele Probleme beim Linken lösen. Wenn der Linker beispielsweise die Meldung "nicht auflösbares externes..." ausgibt, können Sie mit
TDUMP -oiEXTDEF nur die externen Definitionen anzeigen, die in dem Modul mit dem Fehler vorhanden sind. Untersuchen Sie im Anschluss daran mit
TDUMP -oiPUBDEF das Modul, das das Symbol enthält, für das der Linker keine Übereinstimmung finden konnte.
Die Option -oi kann außerdem zur Prüfung der in einem bestimmten Modul erzeugten Segmentnamen und Segmentgrößen verwendet werden. Zum Beispiel:
TDUMP -oiSEGDEF MYMODULE.OBJ zeigt die Namen, Attribute und Größen aller Segmente in MYMODULE an.

Hinweis: Um eine Liste der Datensatztypen für -oi und -ox zu ermitteln, verwenden Sie die Befehlszeilenoptionen -oi? und -ox?.

-q

Unterdrückt die Copyright-Meldung.

-r

Veranlasst TDUMP, Rohdaten anzuzeigen. (Nur OMF)

-R

Veranlasst TDUMP, Adressverschiebungstabellen im 32-Bit-PE-(Win32-)Format darzustellen. Per Vorgabe werden diese Dumps unterdrückt. (Nur PE)

-s[=x]
-su[=x]
-s[xx]

Veranlasst TDUMP, Strings anzuzeigen.

  • -s[=x] – Per Voreinstellung zeigt -s alle Strings in der angegebenen Datei an. x = Such-String. Mit der folgenden Syntax können Sie einen String oder einen Teilstring festlegen:
-s=<String>
Zum Beispiel ergibt der Befehl:
TDUMP -s=black GoGame.exe
die folgende Ausgabe aller Strings, die black enthalten:
56840  IDI_BLACK 
81965: Capture Black 
85038: black.bmp
Das optionale String-Argument berücksichtigt die Groß-/Kleinschreibung nicht. Um mehrere Wörter eines Strings festzulegen, werden Anführungszeichen verwendet. Zum Beispiel:
TDUMP -s="game of go" GoGame.exe
  • -su[=x] – Veranlasst TDUMP, Strings im Unix-Stil anzuzeigen; d.h. ohne Offset (oder dezimale Offsets, -h für Hex). Die Option -su[=x] wird wie -s[=x] verwendet. Das optionale String-Argument x definiert den Such-String.
Zum Beispiel ergibt der Befehl:
TDUMP -su=black GoGame.exe
die folgende Ausgabe:
IDI_BLACK 
Capture Black 
black.bmp
  • -s[xx] – Zeigt darstellbare Strings an. xx kann Folgendes sein:
    • # – Gesuchte minimale String-Länge (Voreinstellung: 4)
    • b# – Offset am Dateianfang (-b# entspricht -sb#).
    • e# – Offset am Dateiende.
    • f – Lange Strings werden formatiert (umbrochen).
    • s – Such-Strings berücksichtigen die Groß-/Kleinschreibung (Voreinstellung: nein).
-t#

Offset am Dateiende -b# für die Anzeige (verwenden Sie für Hex das Präfix 0x). (Nur Elf)

-ua

Löst in die ASM-Quelle auf. (Nur OMF)

-um

Zeigt verkürzte Namen ungekürzt an. Sie müssen den Text nicht neu formatieren, um nur die verkürzten Namen herauszusuchen. Sie können Ausgaben mit verkürzten Namen einfach übergeben. Die Option wirkt sich nur auf die verkürzten Namen aus. (Nicht Elf)

-v

Erzeugt eine ausführlichere Ausgabe. (Nur OMF und COFF)
Wenn diese Option für OBJ- oder LIB-Dateien angegeben wird, gibt TDUMP den Inhalt der Datensätze als Hex-Dump ohne Kommentare zu den Datensätzen aus.
Falls Sie TDUMP für eine Debugger-Symboltabelle anwenden, werden die Informationstabellen in der Reihenfolge angezeigt, in der sie auftreten. TDUMP kombiniert keine Informationen aus mehreren Tabellen, um eine aussagekräftigere Anzeige für ein Modul zu erzeugen.

-w
-wq[#]

Definiert, wie Platzhalter in Dateiangaben verwendet werden.

  • -w – Lässt Platzhalter in Dateiangaben zu.
  • -wq[#] – Platzhalter für die "quiet"-Option. # ist die Länge.

Siehe auch