# (поиск шаблона дизассемблата)
Команда числового знака (#) ищет указанный шаблон в коде дизассембля.
# [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#
Если опустить шаблон или адрес, их значения основаны на предыдущем использовании # команды. Если опустить любой из параметров при первом выполнении # команды, поиск не выполняется. Однако значения Шаблон и Адрес инициализируются даже в этой ситуации.
Если вы включили шаблон или адрес, для него будет задано введенное значение. Если опустить адрес, он инициализируется текущим значением счетчика программы. Если опустить шаблон, он инициализируется пустым шаблоном.