OllyDebug

OllyDebug

OllyDbg 分析:OllyDbg 視窗:OllyDbg

OD,軟體名稱,反彙編工具OD=OllyDebug,一個新的動態追蹤工具,將IDA與SoftIce結合起來的思想,Ring 3 級的調試器,己代替SoftICE成為當今最為流行的調試解密工具了.同時還支持外掛程式擴展功能,是目前最強大的調試工具。基本上,調試自己的程式因為有源碼,一般用vc,破解別人的程式用OllyDebug。ollyDebug - 相關介紹

一,什麼是 OLLYDBG
OllyDbg 是一種具有可視化界面的 32 位彙編-分析調試器。它的特別之處在於可以在沒有原始碼時解決問題,並且可以處理其它編譯器無法解決的難題。
Version 1.10 是最終的發布版本。 這個工程已經停止,我不再繼續支持這個軟體了。但不用擔心:全新打造的 OllyDbg 2.00 不久就會面世!
運行環境: OllyDbg 可以以在任何採用奔騰處理器的 Windows 95、98、ME、NT 或是 XP(未經完全測試)作業系統中工作,但我們強烈建議您採用300-MHz以上的奔騰處理器以達到最佳效果。還有,OllyDbg 是極占記憶體的,因此如果您需要使用諸如追蹤調試[Trace]之類的擴展功能話,建議您最好使用128MB以上的記憶體。
支持的處理器: OllyDbg 支持所有 80x86、奔騰、MMX、3DNOW!、Athlon 擴展指令集、SSE指令集以及相關的數據格式,但是不支持SSE2指令集
配置: 有多達百餘個選項用來設定 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: 您可以利用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 箇中斷。
監視與監察器:每個監視都是一個表達式並能實時顯示表達式的值。您可以使用暫存器、常數、地址表達式、布爾值以及任何複雜代數運算,您還可以比較ASCII和UNICODE
字元串。監察器[inspectors]是一種包含了兩個的索引序列的監視[Watches],它以二維表的形式呈現,可以對數組和結構進行解碼分析。
Heap walk.:在基於Win95的系統中,OllyDbg 可以列出所有的已分配的堆。
句柄:在基於NT的系統中,OllyDbg 可列出被調試程式的所有系統句柄。
執行:.您可以單步執行、步入子程式或者步過子程式。您也可以執行程式直到函式返回時、執行到指定地址處,還可以自動執行。當程式運行時,您仍然可以操縱程式並能夠查看記憶體、設定斷點甚至修改代碼。您也可以任意的暫停或重啟被調試的程式。
Hit跟蹤:.Hit跟蹤可以顯示出目前已執行的指令或函式過程,幫助您檢驗代碼的各個分支。Hit跟蹤會在指定指令到達之前設定斷點,而在這個指令執行後,會把這個斷點清除掉。
譯者註:Hit在英文中是“擊中”的意思,指令如果運行了就表示這個指令被“擊中”了,沒有執行的指令就是“未擊中”,這樣我們就很容易看出被調試程式哪些部分運行了,而哪些沒有運行。
Run跟蹤: Run跟蹤可以單步執行程式,它會在一個很大的循環緩衝區中模擬運行程式。這個模擬器包含了除了SSE指令集以外的所以暫存器、標誌、執行緒錯誤、訊息、已經函式的參數。您可以保存命令,這樣可以非常方便地調試自修改代碼(譯者註:比如加殼程式)。您可以設定條件中斷,條件包括地址範圍、表達式、命令。您可以將Run
跟蹤信息保存到一個檔案中,這樣就可以對比兩次運行的差別。Run跟蹤可以回溯分析已執行過的上百萬條命令的各種細節。
統計: 統計[Profiler]可以在跟蹤時計算某些指令出現的次數。因此您就能了解代碼的哪一部分被頻繁執行。
補丁: 內置彙編器能夠自動找到修改過的代碼段。二進制編輯器則會以ASCII、UNICODE或者十六進制的形式同步顯示修改後的數據。修改後的數據同其它數據一樣,能夠進行複製-貼上操作。原來的數據會自動備份,以便數據恢復時使用。您可以把修改的部分直接複製到執行檔案中,OllyDbg會自動修正。OllyDbg還會記錄以前調試過程中使用的所有補丁。您可以通過空格鍵實現補丁的激活或者禁止。
自解壓檔案: 當調試自解壓檔案時,您往往希望跳過解壓部分,直接停在程式的原始入口點。OllyDbg的自解壓跟蹤將會使您實現這一目的。如果是加保護的自解壓段,自解壓跟蹤往往會失敗。而一旦OllyDbg找到了入口點,它將會跳過解壓部分,並準確的到達入口點。
外掛程式:您可以把自己的外掛程式添加到 OllyDbg 中,以增加新的功能。OllyDbg 的外掛程式能夠訪問幾乎所有重要的數據的結構、能夠在 OllyDbg 的視窗中添加選單和快捷鍵,能夠使用100個以上的外掛程式API函式。外掛程式API函式有詳細的說明文檔。默認安裝已經包含了兩個外掛程式:命令行外掛程式和書籤外掛程式。
UDD:OllyDbg 把所有程式或模組相關的信息保存至單獨的檔案中,並在模組重新載入時繼續使用。這些信息包括了標籤、注釋、斷點、監視、分析數據、條件等等

相關詞條

相關搜尋

熱門詞條

聯絡我們