# (逆アセンブリ パターンの検索)

番号記号 (#) コマンドは、指定されたパターンを逆アセンブリコードから検索します。

# [Pattern] [Address [ L Size ]] 

パラメーター

パターン

逆アセンブリコードから検索するパターンを指定します。 パターンには、さまざまなワイルドカード文字と指定子を含めることができます。 構文の詳細については、「文字列ワイルドカード構文」を参照してください。 パターンにスペースを含めるには、パターンを引用符で囲む必要があります。 パターンでは、大文字と小文字は区別されません。 以前に # コマンドを使用したことがあり、パターンを省略した場合、コマンドは最近使用されたパターンを再利用します。

住所

検索を開始するアドレスを指定します。 構文の詳細については、「アドレスとアドレス範囲の構文」を参照してください。

[サイズ]

検索する命令の数を指定します。 サイズを省略した場合、検索は最初の一致が見つかるまで続行されます。

環境

アイテム 説明
モード ユーザー モード、カーネル モード
目標値 ライブ、クラッシュ ダンプ
プラットフォーム すべて

追加情報

アセンブリ・デバッグと関連コマンドの詳細については、アセンブリ・モードのデバッグを参照してください。

解説

以前に # コマンドを使用し、アドレスを省略した場合、検索は前の検索が終了したところから開始されます。

このコマンドは、逆アセンブルしたテキストから指定されたパターンを検索することによって機能します。 このコマンドを使用すると、レジスタ名、定数、または逆アセンブリの出力に表示されるその他の文字列を検索できます。 アドレス パラメータなしでコマンドを繰り返して、パターンの連続した出現箇所を検索できます。

逆アセンブリ命令を表示するには、u (アンアセンブル) コマンドを使用するか、WinDbg の 逆アセンブリ ウィンドウを使用します。 逆アセンブリの表示には、アドレス オフセット、バイナリ コード、アセンブリ言語ニーモニック、およびアセンブリ言語の詳細の最大 4 つの部分が含まれています。 次の例は、可能な表示を示しています。

0040116b    45          inc         ebp            
0040116c    fc          cld                        
0040116d    8945b0      mov         eax,[ebp-0x1c] 

# コマンドは、逆アセンブリ表示の任意の 1 つの部分内のテキストを検索できます。 たとえば、# eax 0040116bを使用して、アドレス 0040116d の mov eax,[ebp-0x1c] 命令を検索できます。 次のコマンドは、この命令も検索します。

#  [ebp?0x  0040116b 
#  mov  0040116b 
#  8945*  0040116b 
#  116d  0040116b 

ただし、mov と eax は表示の異なる部分に表示されるため、mov eax* を 1 つの単位として検索することはできません。 代わりに mov*eax を使用してください。

追加の例として、次のコマンドを発行して、エントリ ポイント main の後で strlen 関数の最初の参照を検索できます。

# strlen main

同様に、次の 2 つのコマンドを発行して、アドレス 0x779F9FBA の後の最初の jnz 命令を検索し、その後の次の jnz 命令を検索できます。

# jnz 779f9fba# 

パターン またはアドレスを省略すると、それらの値は # コマンドの以前の使用に基づきます。 # コマンドを初めて発行するときに、いずれかのパラメータを省略した場合、検索は実行されません。 ただし、パターンアドレスの値は、このような状況でも初期化されます。

パターン またはアドレスを含めると、その値は入力した値に設定されます。 アドレスを省略した場合は、プログラムカウンターの現在の値に初期化されます。 パターンを省略した場合は、空のパターンに初期化されます。