コンピュータープログラミングの世界で「string」という用語は、一連の文字で構成されるデータ構造のことを指しますが、このSysinternalsのStringユーティリティでは、人間が判読できる文字列のことを指します。

 ファイルに埋め込まれた文字列を検索することができるユーティリティは、数多くあります。しかし、その多くは、Windowsのfindstrコマンドのように、ASCII文字列のみを検索し、Unicode文字列を無視します。また、他の多くは、Windowsのfindコマンドのように、バイナリファイルを正しく検索できません。SysinternalsのStringsにこれらの制限はなく(Stringsは、日本語を含むマルチバイト文字を正しく検索、表示できません)、特定のファイルを検索したり、不明なファイルの中の文字列を見て、出所や目的につながる情報を明らかにしたりするのに役立ちます。

Stringsの使い方

 Stringsのコマンドライン構文は、次のとおりです。

strings [-a] [-b <バイト数>] [-n <長さ>] [-o] [-q] [-s] [-u]
 <ファイルまたはディレクトリ>

 <ファイルまたはディレクトリ>パラメーターは必須であり、ワイルドカードを使用できます(例:*.dll)。Stringsは、パラメーターの条件に一致するすべてのファイルを検索し、既定で、ファイルに埋め込まれている3文字以上のASCIIまたはUnicode文字列のすべてを、ファイル内で見つかった文字列から順番にStringsの標準出力に書き込みます。ACSII文字列のみ、またはUnicode文字列のみを検索するには、それぞれ-aオプションまたは-uオプションを使用します。

 -sオプションは、ディレクトリを再帰的に検索します。検索対象の最小の文字列の長さを既定の3文字以外に設定するには、-nオプションで長さを指定します。-oオプションを付けると、ファイル内でその文字列が始まる場所を示すオフセット値も表示します。ファイルの先頭部分のみを検索するには、-bオプションを使用して、Stringsが調べる先頭からのバイト数を指定します。最後に、-q(quiet)オプションは、Stringsのバナー表示を出力から省略します。このオプションは、Stringsの出力を、sortなどの別のユーティリティで処理する際に特に有効です。

 次のコマンドラインは、explorer.exeの先頭から850,000バイトを対象に、20文字以上のUnicode文字列を検索します。Stringsのバナー表示は省略して、出力結果をsortコマンドでアルファベット順に並べ替えています。図1は、このコマンドラインの出力結果の一部を示しています。

strings -b 850000 -u -n 20 -q explorer.exe | sort
図1●Stringsがexplorer.exeから抽出した20文字以上のUnicode文字列
図1●Stringsがexplorer.exeから抽出した20文字以上のUnicode文字列
[画像のクリックで拡大表示]