Like Share Discussion Bookmark Smile

J.J. Huang   2019-07-05   OllyDBG   瀏覽次數:次   DMCA.com Protection Status

OllyDBG - 第一章 | 認識OllyDBG

這篇將要開始介紹OD的使用,希望透過一步一步的學習和實作,可以讓自己對於OD工具有一定了解以及增加反匯編的一些知識和經驗,在未來實作應用上可以得心應手。

OllyDBG 窗口介紹

OllyDBG 中各個視窗的功能如上圖:

  • 反匯編視窗:顯示被除錯程式的反匯編代碼,標題欄上的位址、HEX 資料、反匯編、注解可以通過在視窗中右擊出現的選單 介面選項->隱藏標題 或 顯示標題 來進行切換是否顯示。用滑鼠左鍵點擊注解標籤可以切換注解顯示的模式。
  • 暫存器視窗:顯示目前所選執行緒的 CPU 暫存器內容。同樣點擊標籤 暫存器 (FPU) 可以切換顯示暫存器的模式。
  • 資訊視窗:顯示反匯編視窗中選中的第一個指令的參數及一些跳轉目的位址、字串等。
  • 資料視窗:顯示記憶體或檔案的內容。右鍵選單可用於切換顯示模式。
  • 堆疊視窗:顯示目前執行緒的堆疊。

要調整上面各個視窗的大小的話,只需左鍵按住邊框拖曳,等調整好了,重新啟動一下 OllyDBG 就可以生效了。

設定UDD、外掛路徑

啟動後我們要把外掛程式及UDD的目錄組態為絕對路徑,點擊選單上的 選項 -> 介面選項,將會出來一個介面選項的對話框,我們點擊其中的目錄標籤:(如果目錄標籤為空白,先點選其他標籤再點回來即可)

針對自己OllyDBG的路徑位置去做設定,範例:(依照自己的路徑設定)

1
2
3
4
5
// UDD路徑:
C:\Users\morose\Downloads\OllyICE\OllyDBG\UDD

// 外掛路徑
C:\Users\morose\Downloads\OllyICE\OllyDBG\plugin

註: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