在WinDbg中,可以通过输入命令(u, ub, uu (Unassemble))或使用反汇编窗口查看程序汇编代码。

如何打开 DissAssembly Code窗口

  • 通过菜单View-->Disassembly
    Windbg Assembly Code(反汇编)窗口的使用-LMLPHP
  • 快捷键Alt+7
  • 工具栏按钮
    Windbg Assembly Code(反汇编)窗口的使用-LMLPHP

DissAssembly窗口

通过上面的方式打开的窗口如下

Windbg Assembly Code(反汇编)窗口的使用-LMLPHP

调试器获取一段内存,将其解释为二进制机器指令,然后将其反汇编以生成机器指令的汇编语言版本。生成的代码将显示在“反汇编”窗口中。

在“反汇编”窗口中,可以执行以下操作:

  • 若要反汇编内存的不同部分,请在“偏移量”框中键入要反汇编的内存的地址。(键入地址后可以按回车键,但不必如此。)
    Windbg Assembly Code(反汇编)窗口的使用-LMLPHP
  • 要查看内存的其他部分,请单击“上一页”或“下一页”按钮,或按“向上翻页”或“向下翻页”键。这些命令分别显示内存前面或后面部分的反汇编代码。通过按右箭头、左箭头、上箭头和下箭头键,可以在窗口内导航。如果使用这些键离开页面,将出现一个新页面。
    Windbg Assembly Code(反汇编)窗口的使用-LMLPHP

反汇编窗口中有一个包含两个按钮以及一个具有其他命令的快捷菜单的工具栏。 若要访问菜单,请右键单击标题栏或单击显示的窗口 (在右上角附近的图标Windbg Assembly Code(反汇编)窗口的使用-LMLPHP)。 以下列表介绍了一些菜单命令:

Windbg Assembly Code(反汇编)窗口的使用-LMLPHP

  • Go to current address 打开“源”窗口,其中包含与“反汇编”窗口中选定行相对应的源文件,并突出显示该行.

  • Disassemble before current instruction 使当前行放置在“反汇编”窗口的中间。此命令是默认选项。如果清除此命令,当前行将显示在反汇编窗口的顶部,这将节省时间,因为反向反汇编可能会很耗时.

  • Highlight instructions from the current source line 使与当前源代码行对应的所有指令突出显示。通常,一个源代码行将对应于多个汇编指令。如果代码已优化,则这些程序集指令可能不是连续的。此命令使您能够查找从当前源代码行汇编的所有指令.

  • Show source line for each instruction 显示对应于每个汇编指令的源行号.

  • Show source file for each instruction 显示与每个程序指令相对应的源文件名.

05-23 05:21