在WinDbg中,可以通過輸入命令(u, ub, uu (Unassemble))或使用反匯編窗口查看程序匯編代碼。
如何打開 DissAssembly Code窗口
- 通過菜單View-->Disassembly
- 快捷鍵Alt+7
- 工具欄按鈕
DissAssembly窗口
通過上面的方式打開的窗口如下
調試器獲取一段內存,將其解釋為二進制機器指令,然后將其反匯編以生成機器指令的匯編語言版本。生成的代碼將顯示在“反匯編”窗口中。
在“反匯編”窗口中,可以執行以下操作:
- 若要反匯編內存的不同部分,請在“偏移量”框中鍵入要反匯編的內存的地址。(鍵入地址后可以按回車鍵,但不必如此。)
- 要查看內存的其他部分,請單擊“上一頁”或“下一頁”按鈕,或按“向上翻頁”或“向下翻頁”鍵。這些命令分別顯示內存前面或后面部分的反匯編代碼。通過按右箭頭、左箭頭、上箭頭和下箭頭鍵,可以在窗口內導航。如果使用這些鍵離開頁面,將出現一個新頁面。
反匯編窗口中有一個包含兩個按鈕以及一個具有其他命令的快捷菜單的工具欄。 若要訪問菜單,請右鍵單擊標題欄或單擊顯示的窗口 (在右上角附近的圖標)。 以下列表介紹了一些菜單命令:
-
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 顯示與每個程序指令相對應的源文件名.