Поделиться через


# (поиск шаблона дизассемблата)

Команда числового знака (#) ищет указанный шаблон в коде дизассембля.

# [Pattern] [Address [ L Size ]] 

Параметры

Шаблон

Указывает шаблон для поиска в коде дизассемблата. Шаблон может содержать различные подстановочные знаки и описатели. Дополнительные сведения о синтаксисе см. в разделе Синтаксис строковых подстановочных знаков. Если вы хотите включить пробелы в шаблон, необходимо заключить шаблон в кавычки. В шаблоне регистр не учитывается. Если вы ранее использовали # команду и опустили Шаблон, команда повторно использует последний использованный шаблон.

Адрес

Указывает адрес, с которого начинается поиск. Дополнительные сведения о синтаксисе см. в разделе Синтаксис адресов и диапазонов адресов.

Размер

Указывает количество инструкций для поиска. Если опустить размер, поиск продолжается до первого совпадения.

Среда

Элемент Описание
Режимы Пользовательский режим, режим ядра
Цели Динамический аварийный дамп
Платформы Все

Дополнительные сведения

Дополнительные сведения об отладке сборок и связанных командах см. в разделе Отладка в режиме сборки.

Комментарии

Если вы ранее использовали # команду и опустили Адрес, поиск начинается там, где закончился предыдущий поиск.

Эта команда выполняет поиск указанного шаблона в дизассемблированном тексте. Эту команду можно использовать для поиска имен регистров, констант или любой другой строки, которая отображается в выходных данных дизассембля. Вы можете повторить команду без параметра Address , чтобы найти последовательные вхождения шаблона.

Инструкции дизассемблирования можно просмотреть с помощью команды u (Unassemble) или окна Дизассемблирования в WinDbg. Дизассемблированное отображение содержит до четырех частей: смещение адреса, двоичный код, mnemonic языка сборки и сведения о языке сборки. В следующем примере показано возможное отображение.

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

Команда # может искать текст в любой отдельной части дизассемблированного отображения. Например, можно использовать #eax 0040116b, чтобы найти инструкцию mov eax,[ebp-0x1c] по адресу 0040116d. Следующие команды также находят эту инструкцию.

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

Однако невозможно выполнить поиск mov eax* как единое целое, так как mov и eax отображаются в разных частях экрана. Вместо этого используйте mov*eax.

В качестве дополнительного примера можно выполнить следующую команду, чтобы найти первую ссылку на функцию strlen после точки входа main.

# strlen main

Аналогичным образом можно выполнить следующие две команды, чтобы найти первую инструкцию jnz после адреса 0x779F9FBA, а затем найти следующую инструкцию jnz после нее.

# jnz 779f9fba# 

Если опустить шаблон или адрес, их значения основаны на предыдущем использовании # команды. Если опустить любой из параметров при первом выполнении # команды, поиск не выполняется. Однако значения Шаблон и Адрес инициализируются даже в этой ситуации.

Если вы включили шаблон или адрес, для него будет задано введенное значение. Если опустить адрес, он инициализируется текущим значением счетчика программы. Если опустить шаблон, он инициализируется пустым шаблоном.