Visual Studio 2022 | 偵錯工具中使用暫存器視窗與旗標
前言
在學習逆向工程的過程中,會需要知道程式對應到在處理器中暫存器這個特殊位置內的值,進而分析、修改…等等。
然而使用Visual Studio來觀看程式在處理器中暫存器的值是件非常簡單方便的事。
直接看看在Visual Studio觀看暫存器視窗的畫面。
註:此處使用
Visual Studio 2022為例,動態圖僅逐步執行幾個步驟,並非完整。
準備專案與偵錯程式
首先,我們使用Visual Studio 2022來開個專案或是沿用HelloWorld專案。
宣告個整數變數a = 1,然後使用printf印出這個變數的位址。
1 |
|

開啟暫存器視窗
注意事項:
- 首先該視窗與其他偵錯工具視窗一樣, 暫存器視窗只能在偵錯會話期間使用。
- 若要啟用暫存器視窗,必須在【工具(T)】→【選項(O)】開啟選項視窗,開啟「偵錯」→「一般」 中勾選[啟用位址層級偵錯]。

開始偵錯與開啟暫存器視窗:
- 由於此處示範的是
x86的偵錯模式,所以方案平台的選項是選擇x86。 - 首先在程式的
int a = 1;這行產生一個紅色圓圈的中斷點。
- 接著我們按【本機 Windows 偵錯工具】來進行偵錯。

- 此時進入了偵錯模式,並且程式運行到剛剛設定的中斷點;也開啟了一個主控台視窗。

- 此時可見
Visual Studio偵錯模式下一些預設的視窗被開啟,像是下方的自動變數、右方的診斷工具…等等。註:這些視窗是預設開啟的視窗,可以透過設定或關閉進行調整,這邊就不詳細說明。

- 在偵錯模式下,點選【偵錯(D)】→【視窗(W)】→【暫存器(G)】。
注意:必須在偵錯模式中,視窗才會有暫存器的選項。

- 「暫存器視窗」預設放在上方的區塊。

- 此時「暫存器視窗」內並未開啟「旗標」的選項。
- 在「暫存器視窗」按下滑鼠「右鍵」,勾選「旗標」,即可看到「旗標」。
註:其他的選項可以根據自己需要自行勾選。

- 接著可以使用「逐步執行(F11)」來進行偵錯。

註:動態圖僅做簡單的示範。
編輯旗標
以下內容擷取於:Microsoft - 關於 Visual Studio 中的暫存器視窗
針對Intel x86處理器,可能會在「暫存器視窗」中看到下列旗標。在偵錯會話期間,可以編輯這些旗標。
| 旗標 | 設定值 |
|---|---|
| 溢位 | OV = 1 |
| Direction | UP = 1 |
| 中斷 | EI = 1 |
| 簽署 | PL = 1 |
| 零個 | ZR = 1 |
| 輔助攜帶 | AC = 1 |
| Parity | PE = 1 |
| Carry | CY = 1 |
結語
使用「暫存器視窗」,可以觀察到處理器中暫存器這個特殊位置,用來觀看處理器正在使用中的小型資料。
編譯或解譯原始程式碼將會根據需要,產生可將資料從記憶體移到暫存器,以及從暫存器移回記憶體的指示…等等。
註:以上參考了
Microsoft - 在 Visual Studio 在暫存器視窗中檢視暫存器值
Microsoft - 關於 Visual Studio 中的暫存器視窗
Family with 220 icons by inipagi
