Debugging Tools for Windows

# (Search for Disassembly Pattern)

数字号(#)命令在反汇编代码中搜索符合指定模板的数据。

语法

# [Pattern] [Address [ L Size ]] 

参数

Pattern
指定用于在反汇编代码中搜索的模板。Pattern可以包含各种通配符和修饰符。关于该语法的更多信息,查看字符串通配符语法。如果在Pattern中包含空格,需要将模板用引号括起来。模板是不区分大小写的。如果之前使用过#命令,并且省略掉Pattern ,该命令会使用上一次的模板。
Address
指定搜索开始的地址。该语法的更多信息,查看地址和地址范围语法
Size
指定要搜索的指令数量。如果省略掉Size ,会一直搜索直到遇到匹配项。

环境

模式 用户模式、内核模式
目标 活动目标、崩溃转储
平台 所有

注释

如果之前使用过#命令并且省略掉Address ,会从上次搜索结束的地方开始搜索。

该命令通过搜索反汇编文本来查找指定的模板。可以使用该命令来查找寄存器名、常数或其他任何在反汇编输出中出现的字符串。可以反复使用不带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*作为单独的单元来进行搜索,因为moveax 出现在输出的不同部位。

另一个示例,可以使用下面的命令在入口点main 中查找对strlen 的第一个引用。

# strlen main

类似的,可以使用下面两个命令来查找0x779F9FBA 之后的第一个jnz 指令,并再查找之后的下一条jnz 指令。

# jnz 779f9fba# 

省略PatternAddress 时,他们的值由上一次的#命令决定。如果第一次使用#命令时省略掉它们中的一个,则不会进行搜索。但是即使在这种情况下PatternAddress 的值也会被初始化。

如果包含了PatternAddress,它的值被设置成输入的值。如果省略Address,它会被设置为程序计数器的当前值。如果省略掉Pattern ,会被设置为任意的空模板。

附加信息

关于汇编调试和相关命令的更多信息,查看汇编模式下的调试

Build machine: CAPEBUILD