Windbg命令系列---#(汇编搜索)

#命令在反汇编代码里根据指定模式进行搜索。

语法

# [Pattern] [Address [ L Size ]]

参数

Pattern

指定要在反汇编代码中搜索的模式。模式可以包含各种通配符和说明符。如果要在模式中包含空格,则必须用引号将模式括起来。该模式不区分大小写。如果您以前使用过#命令并且省略了模式,则该命令将重用最近使用的模式。

Address

指定搜索开始的地址。

Size

指定要搜索的指令数。如果忽略大小,搜索将继续,直到出现第一个匹配。

环境

Modes

User mode, kernel mode

Targets

Live, crash dump

Platforms

All

备注

如果您以前使用过#命令并且省略了地址,则搜索将从上一次搜索结束的位置开始。此命令通过搜索反汇编文本中的指定模式来工作。可以使用此命令查找寄存器名称、常量或反汇编输出中显示的任何其他字符串。可以在不使用Address参数的情况下重复该命令。

您可以使用u(Unassemble)命令或WinDbg中的“反汇编”窗口查看反汇编说明。反汇编显示最多包含四个部分:地址偏移、二进制代码、汇编语言助记符和汇编语言详细信息。以下示例显示了可能的显示。

如果您以前使用过#命令并且省略了地址,则搜索将从上一次搜索结束的位置开始。

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

#命令可以在反汇编显示的任何单个部分中搜索文本。例如,您可以使用#eax 0040116b在地址0040116d处查找mov eax[ebp-0x1c]指令。以下命令也可以找到此指令。

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

但是,您不能将mov eax*作为单个单元进行搜索,因为mov和eax显示在不同部分。相反,可以使用mov*eax。作为另一个示例,您可以发出以下命令来搜索入口点main之后对strlen函数的第一个引用。

# strlen main

类似地,您可以发出以下两个命令来查找地址0x779F9FBA之后的第一条jnz指令,然后查找地址0x779F9FBA之后的下一条jnz指令。

 # jnz 779f9fba# 

省略模式或地址时,它们的值基于先前使用的#命令。如果在第一次发出#命令时忽略了任一参数,则不会执行任何搜索。然而,即使在这种情况下,模式和地址的值也会被初始化。如果包含模式或地址,则其值将设置为输入的值。如果省略地址,它将初始化为程序计数器的当前值。如果省略模式,它将被初始化为空模式。

上一篇:Qt系列文章002-开发环境搭建


下一篇:非必现BUG修改,WinDbg调试dump信息,分析崩溃