#命令在反汇编代码里根据指定模式进行搜索。
语法
# [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#
省略模式或地址时,它们的值基于先前使用的#命令。如果在第一次发出#命令时忽略了任一参数,则不会执行任何搜索。然而,即使在这种情况下,模式和地址的值也会被初始化。如果包含模式或地址,则其值将设置为输入的值。如果省略地址,它将初始化为程序计数器的当前值。如果省略模式,它将被初始化为空模式。