OllyDBG - 第一章 | 認識OllyDBG
這篇將要開始介紹OD的使用,希望透過一步一步的學習和實作,可以讓自己對於OD工具有一定了解以及增加反匯編的一些知識和經驗,在未來實作應用上可以得心應手。
OllyDBG 窗口介紹
OllyDBG
中各個視窗的功能如上圖:
- 反匯編視窗:顯示被除錯程式的反匯編代碼,標題欄上的位址、HEX 資料、反匯編、注解可以通過在視窗中右擊出現的選單 介面選項->隱藏標題 或 顯示標題 來進行切換是否顯示。用滑鼠左鍵點擊注解標籤可以切換注解顯示的模式。
- 暫存器視窗:顯示目前所選執行緒的 CPU 暫存器內容。同樣點擊標籤 暫存器 (FPU) 可以切換顯示暫存器的模式。
- 資訊視窗:顯示反匯編視窗中選中的第一個指令的參數及一些跳轉目的位址、字串等。
- 資料視窗:顯示記憶體或檔案的內容。右鍵選單可用於切換顯示模式。
- 堆疊視窗:顯示目前執行緒的堆疊。
要調整上面各個視窗的大小的話,只需左鍵按住邊框拖曳,等調整好了,重新啟動一下 OllyDBG
就可以生效了。
設定UDD、外掛路徑
啟動後我們要把外掛程式及UDD的目錄組態為絕對路徑,點擊選單上的 選項 -> 介面選項,將會出來一個介面選項的對話框,我們點擊其中的目錄標籤:(如果目錄標籤為空白,先點選其他標籤再點回來即可)
針對自己OllyDBG
的路徑位置去做設定,範例:(依照自己的路徑設定)
1 | // UDD路徑: |
註:UDD目錄:是用於儲存你的OD過程,比如針對某一程式下斷點,記憶體紀錄⋯等等,可以將其儲存以便下次再進行分析。
字型調整:
除錯選項:
選項 -> 除錯選項,新手一般不需變更這裡的選項,預設已組態好,可以直接使用。建議在對OllyDBG
已比較熟的情況下再來進行組態。上面那個異常標籤中的選項經常會在脫殼中用到,建議在有一定除錯基礎後學脫殼時再組態這裡。
右鍵選單
除了直接啟動OllyDBG
來除錯外,我們還可以把OllyDBG
新增到資源管理器右鍵選單,這樣我們就可以直接在 .exe 及 .dll 檔案上點右鍵選取「用Ollydbg開啟」選單來進行除錯。要把OllyDBG
新增到資源管理器右鍵選單,只需點選單 選項 -> 新增到右鍵功能表,將會出現一個對話框,先點擊「加入 Ollydbg 到系統資源管理器選單」,再點擊「完成」按鈕即可。要從右鍵選單中移除也很簡單,還是這個對話框,點擊「從系統資源管理器選單移除 Ollydbg」,再點擊「完成」就行了。
外掛程式
OllyDBG
支援外掛程式功能,外掛程式的安裝也很簡單,只要把下載的外掛程式(一般是個 DLL 檔案)複製到OllyDBG
安裝目錄下的 PLUGIN 目錄中就可以了,OllyDBG
啟動時會自動識別。要注意的是OllyDBG 1.10
對外掛程式的個數有限制,最多不能超過 32 個,否則會出錯。建議外掛程式不要加入的太多。
到這裡基本組態就完成了,OllyDBG
把所有組態都放在安裝目錄下的 ollydbg.ini 檔案中
基本除錯方法
OllyDBG
有三種模式來載入程式進行除錯:
- 一種是點擊選單 檔案 -> 開啟 (快捷鍵是 F3)來開啟一個可執行檔案進行除錯。
- 另一種是點擊選單 檔案 -> 附加 來附加到一個已執行的進程上進行除錯。注意這裡要附加的程式必須已執行。
- 第三種就是用右鍵選單來載入程式(不知這種算不算)。
一般情況下我們選第一種模式。
比如我們選取一個 找call練習.exe
來除錯,通過選單 檔案 -> 開啟 來載入這個程式,OllyDBG
中顯示的內容將會如下圖:
註:開啟過程如果出現
在模組'USER32'中OllyICE遇到幾個損壞的斷點....
的視窗問題,在按下確定後,在按下快捷鍵Alt + B將斷點做移除即可。
基本快捷鍵
(除錯中我們經常要用到的快捷鍵)
F2
:設定斷點:
只要在游標定位的位置(上圖中灰色條)按F2鍵即可,再按一次F2鍵則會移除斷點。(相當於SoftICE
中的F9
)F8
:單步步過:
每按一次這個鍵執行一條反彙編視窗中的一條指令,遇到CALL
等子程式不進入其代碼。(相當於SoftICE
中的F10
)F7
:單步步入:
功能同單步步過(F8
)類似,區別是遇到CALL
等子程式時會進入其中,進入後首先會停留在子程式的第一條指令上。(相當於SoftICE
中的F8
)F4
:執行到選取位置:
作用就是直接執行到游標所在位置處暫停。(相當於SoftICE
中的F7
)F9
:執行:
按下這個鍵如果沒有設定相應斷點的話,被除錯的程式將直接開始執行。(相當於SoftICE
中的F5
)CTR+F9
:執行到返回:
此指令在執行到一個ret
(返回指令)指令時暫停,常用於從系統領空返回到我們除錯的程式領空。(相當於SoftICE
中的F12
)ALT+F9
:執行到使用者代碼:
可用於從系統領空快速返回到我們除錯的程式領空。(相當於SoftICE
中的F11
)
額外常用快捷鍵
- 開啟一個新的可執行程式 (
F3
) - 重新執行當前除錯的程式 (
Ctrl+F2
) - 當前除錯的程式 (
Alt+F2
) - 執行選取的程式進行除錯 (
F9
) - 暫時停止被除錯程式的執行 (
F12
) - 單步進入被除錯程式的
Call
中 (F7
) - 步過被除錯程式的
Call
(F8
) - 跟入被除錯程式的
Call
中 (Ctrl+F11
) - 追蹤時略過被除錯程式的
Call
(Ctrl+F12
) - 執行直到返回 (
Ctrl+F9
) - 顯示記錄視窗 (
Alt+L
) - 顯示模組視窗 (
Alt+E
) - 顯示記憶體視窗 (
Alt+M
) - 顯示 CPU 視窗 (
Alt+C
) - 顯示補綴視窗 (
Ctrl+P
) - 顯示呼叫堆疊 (
Alt+K
) - 顯示斷點視窗 (
Alt+B
) - 開啟除錯選項視窗 (
Alt+O
)
註:快捷鍵可能有重複或是解釋可能有所不同,建議還是實際操作過自行體會。
註:以上參考了
看雪論壇 的 OllyDBG 入门系列(一)-认识OllyDBG