このフロントエンドからは、-sオプション付きのodプログラムを実行して、(バイナリ)ファイルに含まれている0終端文字列(末尾がNULL文字になっているC、C++言語で多用される文字列)を見ることができます。しかし、末尾がNULL文字になっていない文字列は表示しませんので、たとえばテキストファイルを与えても、何も出力されません。odプログラムは、-sオプションを指定するか否かによって、大きく異なる動作をします。そこで、2つの異なる機能のために2種類のGUIフロントエンドを用意しました。もう1つのGUIフロントエンドは、団(odfe.exe)です。PCK版のodは、-sオプション関連では、cygwin版にSJIS文字を表示する-sK、Unicode文字を表示する-sUオプションを追加したものになっています。このフロントエンドの「実行」ボタンは、何らかの入力ファイルが指定されたときに有効になります。
通常のウィンドウ
管のメインダイアログから起動したときのウィンドウ
マイコンピュータ、エクスプローラなどのウィンドウからファイルのアイコンをドラッグしてきてこのウィンドウにドロップすれば、そのファイルが入力ファイルとして使われます。
クリップボード このチェックボックスをクリックすると、クリップボードの内容を標準入力代わりに使います。また、「ファイル」ボタンが使えなくなります。
ファイル このボタンをクリックすると、「入力ファイル」ダイアログボックスが表示されます。ファイルの順番を指定したいときや、ワイルドカードを使って複数のファイルをまとめて指定したい場合には、このダイアログボックスを使います。
入力の指定方法の詳細については、「入力の指定」を参照してください。
-s以外のオプションを指定しなければ、1バイト英数字と解釈できる文字(0x20から0x7e)かタブ(HT: 0x09)、復帰(CR: 0x0D)、改行(LF: 0x0A)が3字以上続き、その後ろにNULL文字(0x00)が続く部分を見つけたときに、その文字列の先頭アドレスを8進で表示し、その横に文字列を出力します。たとえば、次に示すものは、Windows 2000のexplorer.exeに対してod –sを実行した結果の一部です。explorer.exeがリンクしているシステムDLLの名前がexplorer.exeファイルのなかに埋め込まれていることがわかります。
0001240 ADVAPI32.DLL
0001255 KERNEL32.DLL
0001272 NTDLL.DLL
0001304 GDI32.DLL
0001316 USER32.DLL
0001331 SHLWAPI.DLL
0001345 COMCTL32.DLL
この部分はPCK版の拡張機能で、cygwin版には-sオプションがあるだけです。
-sK デフォルトでは連続した英数字を探しますが、「SJIS」を指定すると許容範囲が広がり、JISの1バイトカナ(0xA1〜0xDF)や1バイト目が0x81〜0x9fまたは0xe0〜0xfc、2バイト目が0x40〜0x7Eまたは0x80〜0xfcになっている2バイトの組み合わせ(シフトJISの漢字コード)も文字と見なします。 次に示すのは、PCK版od.exeに対してod –sKを実行した結果のごく一部です。こうすれば、すべてのエラーメッセージを見ることができます。
0142210 od: %iバイト幅では表示できません。代わりに%iバイト幅を使います。
0142314 od: 指定された先頭アドレスが%sファイルの末尾アドレスよりも大きいので、%sファイルは処理しません。
-sU ファイル内の連続した2バイトを仮にUnicode文字と見なし、それをANSIマルチバイトキャラクタセット に変換して、変換が成功したらそれを正当なUnicode文字と見なすという方法で、末尾がUnicodeのNULL文字になっているUnicode文字列を探して出力します。GUIプログラムのリソース(メニュー、ダイアログボックスなど)のなかの文字列はUnicodeで記述されていますので、それらを見つけることができます。たとえば、odstrfe.exeに対してod –sUを実行したときの出力には以下のような部分が含まれています。
0140236 終了してもよいですか?
0140420 %sディレクトリには移動できません。
0140472 キャンセル
デフォルトでは、3字以上の文字列を表示しますが、ここを操作することによって字数を増減できます。長い文字列を要求すれば、出力からゴミが減りますが、有用な情報も表示されなくなる危険があります。
デフォルトでは8進で文字列の先頭アドレスを表示しますが、10進、16進に変えたり、アドレスの表示を抑止したりすることもできます。
-An アドレスを表示しません。
-Ad アドレスを10進で表示します。
-Ax アドレスを16進で表示します。
-j デフォルトではファイルの先頭から文字列を探しますが、このオプションを指定すれば、先頭の指定した分量を読み飛ばすことができます。数値は、先頭が0なら8進、0xなら16進と見なされます(スピンボックスを使うとエディットボックスには10進数しかセットできませんが、直接入力すれば8進、16進数もセットできます)。また、以下の単位を付ければ、数値がそれぞれその単位によって解釈されます。
■■b(512バイト。ただし、数値として16進値が使われた場合は数値の一部と見なされてしまうので注意が必要)
■■k(1Kバイト=1024バイト)
■■m(1Mバイト=1024Kバイト=1048576バイト
-N デフォルトではファイルの末尾までを読み込みますが、このオプションを指定すれば、-jオプションで読み飛ばした位置(-jが指定されていない場合には、ファイルの先頭)から指定した分量だけを読み出して処理を打ち切ることができます。数値は、先頭が0なら8進、0xなら16進と見なされます(スピンボックスを使うとエディットボックスには10進数しかセットできませんが、直接入力すれば8進、16進数もセットできます)。また、以下の単位を付ければ、数値がそれぞれその単位によって解釈されます。
■■b(512バイト。ただし、数値として16進値が使われた場合は数値の一部と見なされてしまうので注意が必要)
■■k(1Kバイト=1024バイト)
■■m(1Mバイト=1024Kバイト=1048576バイト
--help od.exeのヘルプメッセージが表示されます。
--version od.exeのバージョン番号が表示されます。
これらのオプションを指定すると、オプショングループボックス内のほかのオプションは指定できなくなります。
通常、出力ファイル名を指定する必要はありません。指定しなければ、出力は一時ファイルに書き込まれ、その一時ファイルが指定されたテキストエディタによってオープンされます。しかし、ファイル名を指定すれば、出力はそのファイルにリダイレクトされ、テキストエディタにもそのファイルが渡されます。また、中央のエディットボックスにファイル名が表示され、その下の「追加」チェックボックスをチェックできるようになります。「追加」チェックオックスをチェックすると、そのファイルの元の内容の末尾に出力を書き足します。出力の指定方法の詳細は、「出力の指定」を参照してください。
出力グループボックスの下の行には、組み立てたコマンド行が表示されます。管(pipeline)の「編集」ボタンで起動したときを除き、コマンド行の左側の四角形をマウスでクリックしてドラッグしていくと、他の字、管、行(cmdline)にドロップできます。また、「コピー」ボタンを押すと、コマンド行情報がクリップボードにセットされます。クリップボードにコマンド行情報がセットされているときに、マウスの右ボタンをクリックし、コンテキストメニューから「貼り付け」を選択すると、クリップボードのコマンド行情報が反映されます。ドラッグアンドドロップとコピーアンドペーストの詳細は、「ドラッグアンドドロップとコピーアンドペースト」を参照してください。エキスポート、インポートされるときのコマンド行情報の形式については、「コマンド行情報のやり取りの仕組み」を参照してください。さらに、ダイアログボックス上でマウスの右ボタンを押したときに表示されるコンテキストメニューの「.batロード」、「.bat保存」コマンドを使えば、同じ形式のコマンド行情報を.batファイルとして保存し、あとでロードすることができます。このロード、保存機能の詳細は、「.batファイルのロードと保存」を参照してください。
作業ディレクトリを表示しているエディットボックスを直接編集したり、マイコンピュータ、エクスプローラなどからフォルダを1つだけドロップしたりすると、作業ディレクトリを変更できます。「ChDir」ボタンでも、作業ディレクトリを設定できます。作業ディレクトリの設定が必要になるのは、入力ダイアログボックスの「直接指定する」を使うときです。詳しくは、「作業ディレクトリ」を参照してください。
「設定」ボタンを押すと、「設定」ダイアログボックスが表示されます。このダイアログボックスでは、
出力の表示に使うテキストエディタ
エクスプローラなどからファイルやフォルダをドロップしたときの確認メッセージの有無
出力の末尾に実行したコマンド行、実行時間などを付加するかどうか
コマンド行プログラムに渡すファイル名のディレクトリ区切り子を\ではなく/にするかどうか
コマンド行プログラムに渡すファイル名を8.3形式にするかどうか
コマンド行プログラムとしてどれを使うか
を指定できます。詳しくは、「設定ダイアログボックス」を参照してください。
「opt保存」ボタンを押すと、「オプション」グループボックス内の設定が保存されます。詳しくは「オプション保存」を参照してください。