程序調試利器Ollydbg使用教程

一、基礎知識
1.1、Ollydbg

Ollydbg(簡稱OD)是Windows平臺下Ring3級的程序調試利器。程序調試有靜態調試和動態調試兩種。靜態調試是指將程序源代碼編譯成可執行程序之前,用手工或編譯程序等方法對程序源代碼進行測試,來查找和修正程序中的語法錯誤和邏輯錯誤。動態調試則是在可執行程序的運行過程中,來查找和修正程序中的語法錯誤和邏輯錯誤。隨着系統安全與逆向工程的不斷髮展,程序調試已經成爲信息安全愛好者所必備的一種技術。OD結合了靜態調試和動態調試的方法,功能強大,已經成爲了Windows平臺下普通應用程序的調試利器。

1.2、PE文件

PE文件的全稱是Portable Executable,意爲可移植的可執行的文件,常見的EXE、DLL、OCX、SYS、COM都是PE文件

1.3、寄存器

EAX 是”累加器”(accumulator), 它是很多加法乘法指令的缺省寄存器。
EBX 是”基地址”(base)寄存器, 在內存尋址時存放基地址。
ECX 是計數器(counter), 是重複(REP)前綴指令和LOOP指令的內定計數器。
EDX 則總是被用來放整數除法產生的餘數。
ESI/EDI分別叫做”源/目標索引寄存器”(source/destination index),因爲在很多字符串操作指令中, DS:ESI指向源串,而ES:EDI指向目標串。
EBP是”基址指針”(BASE POINTER), 它最經常被用作高級語言函數調用的”框架指針”(frame pointer)。

二、OD的各個窗口

圖片描述

2.1、反彙編窗口

  地址欄[Address] - 顯示距雙擊地址處的相對地址。再次雙擊基地址,則恢復爲標準地址顯示模式;      
  十六進制數據欄[Hex dump] - 設置或取消非條件斷點;
  反彙編欄[Disassembly] - 調用匯編器,修改命令;
  註釋欄[Comment] - 增加或修改與命令相關的註釋。

2.2、信息窗口

用於解碼反彙編窗口中選中的第一個命令的參數,信息窗口也會顯示隱含的參數。

2.3、數據窗口

用於顯示內存或文件的內容。可以從以下預處理格式中選擇一種顯示方式:字節[byte]、文本[text]、整數[integer]、浮點數[float]、地址[address],反彙編[disassembly]、PE頭[PE Header]。

2.4、寄存器窗口

用於顯示和解釋當前所選線程的CPU寄存器中的內容。該窗口同樣允許修改寄存器,並可以跟進地址到其它CPU窗口。

2.5、堆棧窗口

用於顯示當前線程的堆棧。當被調試程序暫停運行時,堆棧窗口一般會自動滾動將當前ESP指向的地址放在窗口的第一條。並且這個地址被高亮顯示。在某些情況下禁止滾動會更方便一些,可以通過在堆棧窗口右鍵單擊[鎖定堆棧]來禁止堆棧自動滾動。

2.6、其他窗口
圖片描述
L -> 日誌窗口
E -> 顯示程序運行使用的模塊
M -> 顯示我們程序映射到內存的信息
T -> 顯示程序的線程窗口
W -> Windows顯示程序窗口
H -> 句柄窗口
C -> 回到Ollydbg主窗口,CPU窗口
P -> 如果程序經過了修改,這裏顯示修改的信息
K -> 顯示調用堆棧的窗口信息
B -> 顯示程序普通斷點的列表窗口
R -> Reference 參考窗口,顯示我們在 OllyDbg 中搜索的結果。
… -> 顯示 RUN TRACE(RUN 跟蹤)命令的結果

三、OD的各種初始設置及快捷鍵

3.1、怎樣設置實時調試

當然,我們不一定會用到實時調試,除非特殊情況。因爲如果我們運行的程序出現崩潰時。

選項 -> 實時調試設置

圖片描述
3.2、在 OllyDbg 中關聯插件

OllyDbg 允許你使用插件,這樣會對解決問題有所幫助

首先下載插件,解壓插件文件夾,爲插件建立一個文件夾(可以在任意位置)

選項->界面選項

我們看到作爲插件路徑的目錄已被指定,即 OllyDbg.exe 所在的目錄,可以把插件放在那裏

圖片描述

3.3、OllyDbg 中最常用的快捷鍵

F7 執行一行代碼,遇到 CALL 等子程序時會進入其中,進入後首先會停留在子程序的第一條 指令上。

F8 執行一行代碼,遇到 CALL 等子程序不進入其代碼。

這兩個鍵的功能有所不同,以後將會看到。

F2 在顯著行設置斷點,再次按 F2 刪除斷點。

相關鏈接:http://bbs.ichunqiu.com/thread-6864-1-1.html?from=csdnJG

發佈了46 篇原創文章 · 獲贊 15 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章