OllyDebug

OllyDebug

OD,軟體名稱,反彙編工具OD=OllyDebug,一個新的動態追蹤工具,將IDA與SoftICE結合起來的思想,Ring 3 級的調試器。OllyDebug的使用界面是可視化操作,但是非常的占記憶體。

基本介紹

  • 中文名反彙編工具
  • 外文名:OllyDebug
  • 簡稱:OD
  • 類別:新的動態追蹤工具
軟體名稱,OllyDbg v1.1,運行環境,支持的處理器,OD基本功能,配置,數據格式,幫助,啟動,調試DLLs,源碼級調試,代碼高亮,執行緒,分析,Object掃描,Implib掃描,名稱,已知函式,函式調用,棧,SEH 鏈,搜尋,視窗,資源,斷點,監視與監察器,Heap walk,句柄,執行,Hit跟蹤,Run跟蹤,統計,補丁,自解壓檔案,外掛程式,UDD,

軟體名稱

OD,已代替SoftICE成為當今最為流行的調試解密工具了.同時還支持外掛程式擴展功能,是目前最強大的調試工具。基本上,調試自己的程式因為有源碼,一般用vc,破解別人的程式用OllyDebug。
OllyDebug運行界面OllyDebug運行界面

OllyDbg v1.1

OllyDbg 是一種具有可視化界面的 32 位彙編-分析調試器。它的特別之處在於可以在沒有原始碼時解決問題,並且可以處理其它編譯器無法解決的難題。

運行環境

OllyDbg 可以以在任何採用奔騰處理器的 Windows 95、98、ME、NT 、XP作業系統中工作。OllyDbg 是極占記憶體的,因此如果您需要使用諸如追蹤調試[Trace]之類的擴展功能話,建議您最好使用128MB以上的記憶體。

支持的處理器

OllyDbg 支持所有 80x86、奔騰、MMX、3DNOW!、Athlon擴展指令集、SSE指令集以及相關的數據格式,但是不支持SSE2指令集

OD基本功能

配置

有多達百餘個選項用來設定 OllyDbg 的外觀和運行。

數據格式

OllyDbg 的數據視窗能夠顯示的所有數據格式:HEXASCIIUNICODE、 16/32位有/無符號/HEX整數、32/64/80位浮點數、地址、反彙編MASM、IDEAL或是HLA)、PE檔案頭或執行緒數據塊

幫助

此檔案中包含了關於理解和使用 OllyDbg 的必要的信息。如果您還有 Windows API 幫助檔案的話(由於著作權的問題 win32.hlp 沒有包括在內),您可以將它掛在 OllyDbg 中,這樣就可以快速獲得系統函式的相關幫助。

啟動

您可以採用命令行的形式指定執行檔、也可以從選單中選擇,或直接拖放到OllyDbg中,或者重新啟動上一個被調試程式,或是掛接[Attach]一個正在運行的程式。OllyDbg支持即時調試。OllyDbg根本不需要安裝,可直接在軟碟中運行!

調試DLLs

您可以利用OllyDbg調試標準動態程式庫 (DLLs)。OllyDbg 會自動運行一個可執行程式。這個程式會載入程式庫,並允許您調用程式庫的輸出函式。

源碼級調試

OllyDbg 可以識別所有 Borland 和 Microsoft 格式的調試信息。這些信息包括原始碼、函式名、標籤、全局變數、靜態變數。有限度的支持動態(棧)變數和結構。

代碼高亮

OllyDbg 的反彙編器可以高亮不同類型的指令(如:跳轉、條件跳轉、入棧、出棧、調用、返回、特殊的或是無效的指令)和不同的運算元(常規[general]、
FPU/SSE、段/系統暫存器、在棧或記憶體中的運算元,常量)。您可以定製個性化高亮方案。

執行緒

OllyDbg 可以調試多執行緒程式。因此您可以在多個執行緒之間轉換,掛起、恢復、終止執行緒或是改變執行緒優先權。並且執行緒視窗將會顯示每個執行緒的錯誤(就像調用 GETLASTERROR 返回一樣)。

分析

OllyDbg 的最大特點之一就是分析。它會分析函式過程、循環語句、選擇語句、表[tables]、常量、代碼中的字元串、欺騙性指令[tricky constructs]、API調用、函式中參數的數目,import表等等。. 這些分析增加了二進制代碼的可讀性,減少了出錯的可能性,使得我們的調試工作更加容易。

Object掃描

OllyDbg 可以掃描Object檔案/庫(包括 OMF 和 COFF 格式),解壓代碼段[code segments]並且對其位置進行定向。

Implib掃描

由於一些DLL檔案的輸出函式使用的索引號,對於人來說,這些索引號沒有實際含義。如果您有與DLL相應的輸入庫[import library],OllyDbg 就可以將序號轉換成符號名稱。
完全支持Unicode: 幾乎所有支持 ASCII 的操作同時也支持 UNICODE,反之亦然。

名稱

OllyDbg 可以根據 Borland 和 Microsoft 格式的調試信息,顯示輸入/輸出符號及名稱。Object 掃描器可以識別庫函式。其中的名稱和注釋您可任意添加。如果DLL中的某些函式是通過索引號輸出的,則您可通過掛接輸入庫[import library]來恢復原來的函式名稱。不僅如此,OllyDbg還能識別大量的常量符號名(如:視窗訊息、錯誤代碼、位域[bit fields]…)並能夠解碼為已知的函式調用

已知函式

OllyDbg 可以識別 2300 多個 C 和 Windows API 中的常用函式及其使用的參數。您可以添加描述信息、預定義解碼。您還可以在已知函式設定 Log 斷點並可以對參數進行記錄。

函式調用

OllyDbg 可以在沒有調試信息或函式過程使用非標準的開始部分[prolog]和結尾部分[epilog]的情況下,對遞歸調用進行回溯。
譯者註:
004010D0 push ebp \
004010D1 mov ebp,esp |
004010D3 sub esp,10h |prolog
004010D6 push ebx |
004010D7 push esi |
004010D8 push edi /
……
004010C5 pop edi \
004010C6 pop esi |
004010C7 pop ebx |epilog
004010C8 mov esp,ebp |
004010CA pop ebp |
004010CB ret /

在棧視窗中,OllyDbg 能智慧型識別返回地址和棧框架[Stack Frames]。並會留下一些先前的調用。如果程式停在已知函式上,堆疊視窗將會對其參數進行分析解碼。
譯者註:棧框架[Stack Frames]是指一個記憶體區域,用於存放函式參數和局部變數

SEH 鏈

跟蹤棧並顯示結構化異常句柄鏈。全部鏈會顯示在一個單獨的視窗中。

搜尋

方法真是太多了!可精確、模糊搜尋命令或命令序列,搜尋常數,搜尋二進制、文本字元串,搜尋全部命令地址,搜尋全部常量或地址域[address range],搜尋所有能跳到選定地址的跳轉,搜尋所有調用和被調用的函式,搜尋所有參考字元串,在不同模組中搜尋所有調用、搜尋函式名稱,在全部已分配的記憶體中搜尋二進制序列。如果搜尋到多個結果,您可以對其進行快速操作。

視窗

OllyDbg 能夠列出關於調試程式中的各種視窗,並且可以在視窗、類甚至選定的訊息上設定斷點。

資源

如果 Windows API 函式使用了參考資源串,OllyDbg 可以顯示它。其支持顯示的類型僅限於附帶資源[attached resources]的列表、數據顯示及二進制編輯、。

斷點

OllyDbg 支持各種斷點:一般斷點、條件斷點、記錄斷點(比如記錄函式參數到記錄視窗)、記憶體讀寫斷點、硬體斷點(只適用於ME/NT/2000)等。在Hit跟蹤情況下,可以在模組的每條命令上都設定INT3斷點。在使用500-MHZ處理器的 Windows NT 中,OllyDbg 每秒可以處理高達 5000 箇中斷。

監視與監察器

每個監視都是一個表達式並能實時顯示表達式的值。您可以使用暫存器、常數、地址表達式、布爾值以及任何複雜代數運算,您還可以比較ASCIIUNICODE
字元串。監察器[inspectors]是一種包含了兩個的索引序列的監視[Watches],它以二維表的形式呈現,可以對數組和結構進行解碼分析。

Heap walk

在基於Win95的系統中,OllyDbg 可以列出所有的已分配的堆。

句柄

在基於NT的系統中,OllyDbg 可列出被調試程式的所有系統句柄。

執行

您可以單步執行、步入子程式或者步過子程式。您也可以執行程式直到函式返回時、執行到指定地址處,還可以自動執行。當程式運行時,您仍然可以操縱程式並能夠查看記憶體、設定斷點甚至修改代碼。您也可以任意的暫停或重啟被調試的程式。

Hit跟蹤

Hit跟蹤可以顯示出程式當前已執行的指令或函式過程,幫助您檢驗代碼的各個分支。Hit跟蹤會在指定指令到達之前設定斷點,而在這個指令執行後,會把這個斷點清除掉。
譯者註:Hit在英文中是“擊中”的意思,指令如果運行了就表示這個指令被“擊中”了,沒有執行的指令就是“未擊中”,這樣我們就很容易看出被調試程式哪些部分運行了,而哪些沒有運行。

Run跟蹤

Run跟蹤可以單步執行程式,它會在一個很大的循環緩衝區中模擬運行程式。這個模擬器包含了除了SSE指令集以外的所以暫存器、標誌、執行緒錯誤、訊息、已經函式的參數。您可以保存命令,這樣可以非常方便地調試自修改代碼(譯者註:比如加殼程式)。您可以設定條件中斷,條件包括地址範圍、表達式、命令。您可以將Run
跟蹤信息保存到一個檔案中,這樣就可以對比兩次運行的差別。Run跟蹤可以回溯分析已執行過的上百萬條命令的各種細節。

統計

統計[Profiler]可以在跟蹤時計算某些指令出現的次數。因此您就能了解代碼的哪一部分被頻繁執行。

補丁

內置彙編器能夠自動找到修改過的代碼段二進制編輯器則會以ASCIIUNICODE或者十六進制的形式同步顯示修改後的數據。修改後的數據同其它數據一樣,能夠進行複製-貼上操作。原來的數據會自動備份,以便數據恢復時使用。您可以把修改的部分直接複製到執行檔案中,OllyDbg會自動修正。OllyDbg還會記錄以前調試過程中使用的所有補丁。您可以通過空格鍵實現補丁的激活或者禁止。

自解壓檔案

當調試自解壓檔案時,您往往希望跳過解壓部分,直接停在程式的原始入口點。OllyDbg的自解壓跟蹤將會使您實現這一目的。如果是加保護的自解壓段,自解壓跟蹤往往會失敗。而一旦OllyDbg找到了入口點,它將會跳過解壓部分,並準確的到達入口點。

外掛程式

您可以把自己的外掛程式添加到 OllyDbg 中,以增加新的功能。OllyDbg 的外掛程式能夠訪問幾乎所有重要的數據的結構、能夠在 OllyDbg 的視窗中添加選單和快捷鍵,能夠使用100個以上的外掛程式API函式。外掛程式API函式有詳細的說明文檔。默認安裝已經包含了兩個外掛程式:命令行外掛程式和書籤外掛程式。

UDD

OllyDbg 把所有程式或模組相關的信息保存至單獨的檔案中,並在模組重新載入時繼續使用。這些信息包括了標籤、注釋、斷點、監視、分析數據、條件等等

相關詞條

熱門詞條

聯絡我們