基本介紹
- 中文名:反彙編工具
- 外文名:OllyDebug
- 簡稱:OD
- 類別:新的動態追蹤工具
軟體名稱,OllyDbg v1.1,運行環境,支持的處理器,OD基本功能,配置,數據格式,幫助,啟動,調試DLLs,源碼級調試,代碼高亮,執行緒,分析,Object掃描,Implib掃描,名稱,已知函式,函式調用,棧,SEH 鏈,搜尋,視窗,資源,斷點,監視與監察器,Heap walk,句柄,執行,Hit跟蹤,Run跟蹤,統計,補丁,自解壓檔案,外掛程式,UDD,
軟體名稱
OllyDbg v1.1
OllyDbg 是一種具有可視化界面的 32 位彙編-分析調試器。它的特別之處在於可以在沒有原始碼時解決問題,並且可以處理其它編譯器無法解決的難題。
運行環境
OllyDbg 可以以在任何採用奔騰處理器的 Windows 95、98、ME、NT 、XP作業系統中工作。OllyDbg 是極占記憶體的,因此如果您需要使用諸如追蹤調試[Trace]之類的擴展功能話,建議您最好使用128MB以上的記憶體。
支持的處理器
OD基本功能
配置
有多達百餘個選項用來設定 OllyDbg 的外觀和運行。
數據格式
OllyDbg 的數據視窗能夠顯示的所有數據格式:HEX、ASCII、UNICODE、 16/32位有/無符號/HEX整數、32/64/80位浮點數、地址、反彙編(MASM、IDEAL或是HLA)、PE檔案頭或執行緒數據塊。
幫助
此檔案中包含了關於理解和使用 OllyDbg 的必要的信息。如果您還有 Windows API 幫助檔案的話(由於著作權的問題 win32.hlp 沒有包括在內),您可以將它掛在 OllyDbg 中,這樣就可以快速獲得系統函式的相關幫助。
啟動
您可以採用命令行的形式指定執行檔、也可以從選單中選擇,或直接拖放到OllyDbg中,或者重新啟動上一個被調試程式,或是掛接[Attach]一個正在運行的程式。OllyDbg支持即時調試。OllyDbg根本不需要安裝,可直接在軟碟中運行!
調試DLLs
源碼級調試
代碼高亮
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 斷點並可以對參數進行記錄。
函式調用
譯者註:
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 /
棧
譯者註:棧框架[Stack Frames]是指一個記憶體區域,用於存放函式參數和局部變數。
SEH 鏈
跟蹤棧並顯示結構化異常句柄鏈。全部鏈會顯示在一個單獨的視窗中。
搜尋
方法真是太多了!可精確、模糊搜尋命令或命令序列,搜尋常數,搜尋二進制、文本字元串,搜尋全部命令地址,搜尋全部常量或地址域[address range],搜尋所有能跳到選定地址的跳轉,搜尋所有調用和被調用的函式,搜尋所有參考字元串,在不同模組中搜尋所有調用、搜尋函式名稱,在全部已分配的記憶體中搜尋二進制序列。如果搜尋到多個結果,您可以對其進行快速操作。
視窗
OllyDbg 能夠列出關於調試程式中的各種視窗,並且可以在視窗、類甚至選定的訊息上設定斷點。
資源
斷點
OllyDbg 支持各種斷點:一般斷點、條件斷點、記錄斷點(比如記錄函式參數到記錄視窗)、記憶體讀寫斷點、硬體斷點(只適用於ME/NT/2000)等。在Hit跟蹤情況下,可以在模組的每條命令上都設定INT3斷點。在使用500-MHZ處理器的 Windows NT 中,OllyDbg 每秒可以處理高達 5000 箇中斷。
監視與監察器
Heap walk
在基於Win95的系統中,OllyDbg 可以列出所有的已分配的堆。
句柄
在基於NT的系統中,OllyDbg 可列出被調試程式的所有系統句柄。
執行
您可以單步執行、步入子程式或者步過子程式。您也可以執行程式直到函式返回時、執行到指定地址處,還可以自動執行。當程式運行時,您仍然可以操縱程式並能夠查看記憶體、設定斷點甚至修改代碼。您也可以任意的暫停或重啟被調試的程式。
Hit跟蹤
Hit跟蹤可以顯示出程式當前已執行的指令或函式過程,幫助您檢驗代碼的各個分支。Hit跟蹤會在指定指令到達之前設定斷點,而在這個指令執行後,會把這個斷點清除掉。
譯者註:Hit在英文中是“擊中”的意思,指令如果運行了就表示這個指令被“擊中”了,沒有執行的指令就是“未擊中”,這樣我們就很容易看出被調試程式哪些部分運行了,而哪些沒有運行。
Run跟蹤
跟蹤信息保存到一個檔案中,這樣就可以對比兩次運行的差別。Run跟蹤可以回溯分析已執行過的上百萬條命令的各種細節。
統計
統計[Profiler]可以在跟蹤時計算某些指令出現的次數。因此您就能了解代碼的哪一部分被頻繁執行。
補丁
內置彙編器能夠自動找到修改過的代碼段。二進制編輯器則會以ASCII、UNICODE或者十六進制的形式同步顯示修改後的數據。修改後的數據同其它數據一樣,能夠進行複製-貼上操作。原來的數據會自動備份,以便數據恢復時使用。您可以把修改的部分直接複製到執行檔案中,OllyDbg會自動修正。OllyDbg還會記錄以前調試過程中使用的所有補丁。您可以通過空格鍵實現補丁的激活或者禁止。
自解壓檔案
當調試自解壓檔案時,您往往希望跳過解壓部分,直接停在程式的原始入口點。OllyDbg的自解壓跟蹤將會使您實現這一目的。如果是加保護的自解壓段,自解壓跟蹤往往會失敗。而一旦OllyDbg找到了入口點,它將會跳過解壓部分,並準確的到達入口點。
外掛程式
您可以把自己的外掛程式添加到 OllyDbg 中,以增加新的功能。OllyDbg 的外掛程式能夠訪問幾乎所有重要的數據的結構、能夠在 OllyDbg 的視窗中添加選單和快捷鍵,能夠使用100個以上的外掛程式API函式。外掛程式API函式有詳細的說明文檔。默認安裝已經包含了兩個外掛程式:命令行外掛程式和書籤外掛程式。
UDD
OllyDbg 把所有程式或模組相關的信息保存至單獨的檔案中,並在模組重新載入時繼續使用。這些信息包括了標籤、注釋、斷點、監視、分析數據、條件等等