ファイル ダンプ ユーティリティ: TDUMP.EXE

提供: RAD Studio
移動先: 案内検索

コマンドライン ユーティリティ:インデックス への移動

TDUMP.EXE は、ファイルの構造を示すファイル ダンプを作成します。

TDUMP は、ファイルを構造的に分解し、ファイルの拡張子を元に出力表示形式を判断します。TDUMP は、.EXE、.OBJ、.LIB ファイルなど、多くのファイル形式を認識します。TDUMP が拡張子を認識できなかった場合には、ファイルの 16 進ダンプが生成されます。出力形式は、プログラム開始時に TDUMP のコマンドライン オプションを使って指定することができます。

TDUMP はファイルの内部構造を見ることができるため、ファイルの内容だけでなく、ファイルがどのように構成されているかも表示することができます。さらに、TDUMP ではファイルの構造と拡張子が一致しているかどうかを検証するため、ファイルの整合性テストに TDUMP を使うこともできます。

TDUMP は、stdin から入力をリダイレクト("より大" 記号 >)やパイプ(縦棒 |)で読み取ることができます。

TDUMP64.EXE は 64 ビット Windows 版のファイル ダンプ ユーティリティであり、そのオプションと構文は TDUMP.EXE と同じです。

コマンドライン構文

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

詳細は以下のとおりです。

  • <inputfile> は、構造を表示したい(つまり "ダンプ" したい)ファイルです。
  • <listfile> は、出力ファイル名で、省略可能です(標準のリダイレクト コマンド(>)も利用可能です)。
  • <options> は、任意の TDUMP コマンドライン オプションです。


コマンドライン ヘルプを表示するには、次のように入力します。

tdump

または

tdump -?

拡張コマンドライン ヘルプ画面が表示されます。


コマンドライン オプション

オプションの前に付ける文字は /- のどちらを使用しても構いません。たとえば、次の 2 つのコマンドは等価です。

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

TDUMP.EXE では、以下の表に示すコマンドライン オプションをサポートしています。

TDUMP のコマンドライン オプション

オプション 説明
-?

拡張ヘルプ画面が表示されます。

-a
-a7

TDUMP は、ファイルの種類に応じて出力表示を自動的に調整します。-a または -a7 のオプションを指定すると、ファイルを ASCII として表示することができます。

  • -a -- ASCII ファイル表示となります。つまり、オフセットと内容が表示可能な ASCII 文字で表示されます。表示可能でない文字(制御文字など)はピリオドになります。
  • -a7 -- high-ASCII 文字は対応する low-ASCII 文字に変換されます。これが便利なのは、ダンプ対象のファイルが high-ASCII 文字をフラグとして設定している場合です。
-b#

指定した 10 進数 # のオフセットの位置から情報を表示できるようにします(16 進数の場合は先頭に 0x を付け加えます)。たとえば MYFILE のダンプをオフセット 100 から出力したい場合には、次のように指定します。
TDUMP -b100 MYFILE

-C

TDUMP は COFF 形式のファイル(.OBJ および .LIB)で見つかった情報をダンプします。このオプションが便利なのは、Microsoft .OBJ や .LIB ファイルとリンクしている場合です (COFF のみ)。

-d

TDUMP は、.OBJ ファイルで見つかった C++Builder 32 ビット デバッグ情報をダンプします。このオプションを指定しなければ、TDUMP はデータをそのまま表示するだけです (OMF のみ)。

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

このオプションのどれを指定しても、TDUMP はファイルを実行可能ファイル(.EXE/DLL)として表示します。
実行可能ファイルの表示は、オペレーティング システムがファイルのロード時に使用するファイル内の情報から構成されます。シンボル デバッグ情報がある場合には、それも表示されます。
TDUMP では、DOS 実行可能ファイル、新形式の実行可能ファイル(16 ビット版 Windows および OS/2 の .EXE および DLL)、LE(Linear Executable)形式のファイル、32 ビット版 Windows(Windows 95/98/Me、Windows NT/2000/XP など)で使われる PE(Portable Executable)形式のファイルの情報を表示します。

  • -e -- ファイルを実行可能ファイルとして表示します(EXE/DLL、DOS、Win16、OS/2、PE)。
  • -ea[:v] -- エクスポートの表示方法を指定します (PE のみ)。
    • -ea -- すべてのエクスポートをソートせずに表示します。
    • -ea:v -- すべてのエクスポートを RVA でソートして表示します。
デフォルトでは、名前の付いたエクスポートのみが名前順にダンプに出力されます。
  • -ed -- EXE のデバッグ情報を無効にします。
  • -ee[=x] -- EXE/DLL に含まれるエクスポートのみを一覧表示します(任意指定の x を指定した場合はそれに一致したもののみ表示します)。(PE のみ)。
  • -eh -- EXE ヘッダーの表示を無効にします (Elf のみ)。
  • -eiID -- .EXE のテーブル ID のみを表示します(HDR、OBJ、FIX、NAM、ENT)。(PE のみ)。
  • -el -- 行番号を表示しません。
  • -em[=x] -- EXE/DLL に含まれるインポートのみを一覧表示します(任意指定の x を指定した場合はそれに一致したもののみ表示します)。(PE のみ)。
  • -em.[x] -- EXE/DLL に含まれるインポート モジュールのみを一覧表示します(任意指定の x は検索文字列です)。(PE のみ)。
  • -ep -- EXE PE のヘッダー表示を無効にします (PE のみ)。
  • -er -- 再配置テーブルを表示しません。
  • -es[=x] -- プログラム セクションを 16 進ダンプとして表示します。x を使用すると具体的なセクションを指定できます (Elf のみ)。
  • -et -- EXE シンボル テーブルを無効にします (Elf のみ)。
  • -ex -- 新形式の実行可能ファイル情報を表示しません。つまり、DOS の "スタブ" プログラムの情報のみが表示されます。
-h[O|=x]

ダンプ ファイルを 16 進(hex)形式で表示します。

  • O -- 次のいずれかを指定できます。
    • r -- オフセットを開始オフセットからの相対値で出力します。
    • a -- 絶対オフセットを出力します。
  • =x -- 開始ファイル オフセット(-b# と同じ)。

16 進形式は、オフセット番号の列、16 進数の 16 の列、およびそれを ASCII 表示したもの(ASCII 文字として表示できないものはピリオドで表示)で構成されます。
TDUMP が入力ファイルの拡張子を認識できなければ、ファイルは 16 進形式で表示されます(オプションを使って別の形式を指定していない場合)。

-iID

使用するデバッグ テーブルの ID を指定します。ID[?/abc...rst] で指定します (Elf を除く)。

-xID

除外するデバッグ テーブルの ID を指定します。ID[?/abc...rst] で指定します (Elf を除く)。

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

出力ファイルをライブラリ(.LIB)ファイル形式で表示します (OMF LIB のみ)。
ライブラリ ファイルとはオブジェクト ファイルをまとめたものです(オブジェクト ファイルの詳細は、-o オプションの説明を参照)。
ライブラリ ファイル ダンプは、ライブラリ固有の情報、オブジェクト ファイル、およびオブジェクト ファイル内のレコードを表示します。

  • -li -- TDUMP は、インポート ライブラリのダンプ時に IMPDEF レコードを短い形式で表示します。また、次の構文で検索文字列を指定することもできます。
-li=<string>
たとえば、次のコマンドでは、
tdump -li=codeptr import32.lib
次の結果が出力されます。
Impdef:(ord) KERNEL32.0336=ISBADCODEPTR
この結果は、関数が序数によってエクスポートされており、その順序値が 336(10進)であることを示しています。さらに、この出力にはモジュール名と関数名も含まれています。
次のコマンドを入力すると、
tdump -li=walk import32.lib
TDUMP は次のように表示します。
Impdef:(name) KERNEL32.????=HEAPWALK
ここには、名前でエクスポートされた関数が表示されています。
  • -le -- TDUMP は、OBJ ファイルのダンプ時に EXDEF レコードを短い形式で表示します。また、次の構文で検索文字列を指定することもできます。
-le=<string>
-lm[=x]

メンバのダンプを表示します(x を指定すると一致したもののみ出力します)。(ELF、LIB のみ)。

-lh

アーカイブ内のメンバの一覧を表示します (ELF、LIB のみ)。

-lt

アーカイブ内のエクスポートされたシンボルを表示します (ELF、LIB のみ)。

-m

オブジェクト ファイル、実行可能ファイル、およびデバッガ シンボル情報ファイルの中に現れる C++ 名を "マングルされた" 形式のままで表示します。ある関数名や引数を C++ コンパイラがどのように "マングルする" かを調べるのに役立ちます (Elf を除く)。

-M

MACH ファイルを表示します (MACH のみ)。

-ns

stdin をリダイレクトするためのサポートを無効にします。

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

これらのオプションを指定すると、ファイルはオブジェクト ファイル(.OBJ)として表示されます (OMF のみ)。

  • -o -- ファイルをオブジェクト ファイル(.OBJ)として表示します。オブジェクト ファイルの表示には、コマンドとデータをリンカに渡して .EXE ファイルの作成方法を知らせるための、コマンド レコードの記述が含まれます。この表示形式では、各レコードとそれに関連するデータが、レコードごとに表示されます。
  • -oc -- TDUMP は、レコードが見つかるたびに巡回冗長テスト(CRC)を行います。-o を指定したときの表示と異なるのは、CRC チェックのエラーが発生した場合(TDUMP の CRC 値がレコードの CRC バイトと異なる場合)だけです。
  • -oi<ID> -- 指定した OMF レコード タイプのみがオブジェクト モジュール ダンプに含められます。
-ox<ID>[=x] -- 指定した OMF レコード タイプをオブジェクト モジュール ダンプから除外します。
<ID> を表示したいレコードの名前に置き換えてください。たとえば、
TDUMP -oiPUBDEF MYMODULE.OBJ を実行すると、MYMODULE.OBJ のオブジェクト モジュール表示に PUBDEF レコードのみが表示されます。
-ox および -oi のオプションは、リンク中に発生したエラーを見つけるのに役立ちます。EXTDEF シンボルおよび PUBDEF シンボルのスペルや大文字/小文字を調べると、リンク時の多くの問題を解決できます。たとえば、リンカから "未解決の外部シンボル" のメッセージが帰ってきた場合には、
TDUMP -oiEXTDEF を実行して、エラーが発生しているモジュール内の外部定義を表示します。その後、
リンカが一致させられないパブリック シンボルが含まれるモジュールに対して TDUMP -oiPUBDEF を実行します。
また、-oi スイッチを使って、特定のモジュールで生成されたセグメントの名前およびサイズを確認することもできます。たとえば、
TDUMP -oiSEGDEF MYMODULE.OBJ を実行すると、MYMODULE に含まれるすべてのセグメントの名前、属性、およびサイズが表示されます。

メモ:-oi および -ox に指定できるレコード タイプの一覧を取得するには、-oi? および -ox? というコマンドライン オプションを使用してください。

-q

著作権表示を含めません。

-r

TDUMP はデータをそのまま表示します (OMF のみ)。

-R

TDUMP は 32 ビット PE(Win32)形式の画像から再配置テーブルをダンプします。デフォルトでは、このダンプは表示されません (PE のみ)。

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

TDUMP で文字列を表示するよう指示します。

  • -s[=x] -- デフォルトでは、-s を指定するとファイル内のすべての文字列が表示されます。x は検索文字列です。次の構文を使って、文字列や文字列の一部を指定することができます。
-s=<文字列>
たとえば、次のコマンドを実行すると、
TDUMP -s=black GoGame.exe
black を含むすべての文字列が次のように出力されます。
56840  IDI_BLACK
81965: Capture Black
85038: black.bmp
この任意指定の文字列引数では、大文字と小文字は区別されません。複数の単語からなる文字列を指定する場合には引用符を使用します。たとえば、次のように指定します。
TDUMP -s="game of go" GoGame.exe
  • -su[=x] -- TDUMP は Unix 形式の文字列を表示します。つまり、オフセットなし(または 10 進のオフセット。16 進の場合は -h)です。-su[=x] オプションの使い方は -s[=x] と同じです。任意指定の文字列引数 x に検索文字列を指定します。
たとえば、次のコマンドを実行すると、
TDUMP -su=black GoGame.exe
次の結果が出力されます。
IDI_BLACK
Capture Black
black.bmp
  • -s[xx] -- 観察可能な文字列を表示します。xx には以下のものを指定できます。
    • # -- 検索する文字列の最小の長さ(デフォルトは 4)。
    • b# -- 開始ファイル オフセット(-b#-sb# と同じ)。
    • e# -- 終了ファイル オフセット。
    • f -- 長い文字列を整形(折り返し)します。
    • s -- 大文字と小文字を区別して文字列を検索します(デフォルトは区別しません)。
-t#

終了ファイル オフセット -b# を表示します(16 進数の場合は先頭に 0x を付け加えます)。(Elf のみ)。

-ua

asm ソースに逆アセンブルします (OMF のみ)。

-um

変形された名前を変形されないものとして表示します。このオプションを使う前にテキストを書式設定し直して変形された名前だけを削除する必要はありません。テキストの中に変形された名前を含む出力を渡すと、変形された名前だけが影響を受けます (Elf を除く)。

-v

詳細表示をします (OMF および COFF のみ)。
.OBJ または .LIB ファイルに対して指定すると、TDUMP は、レコードに関するコメントなしで、レコードの内容だけを 16 進ダンプします。
デバッガ シンボル テーブルに対して TDUMP を実行すると、見つかった順に情報テーブルが表示されます。TDUMP は、複数のテーブルの情報を組み合わせて、モジュール レベルでより意味のある情報を表示することはありません。

-w
-wq[#]

ファイルの指定でワイルドカードをどう使用するかを指定します。

  • -w -- ファイルの指定でワイルドカードを使用できるようにします。
  • -wq[#] -- ワイルドカード使用時にメッセージを表示しません。# は幅です。

関連項目