[原創]OllyDbg實用技巧六則 (3千字)

看雪資料發表於2003-02-23

OllyDbg實用技巧六則
                              dOSKEY lEE
關鍵詞: OllyDbg、OD、技巧

1、讓跳轉路徑顯示出來
    開啟Options\Debugging Option。彈出Debugging Option對話方塊,選擇CPU頁,選定
“Show direction to jumps”、“Show jump path”和“Show grayed path if jump is
not taken”。如此以來在Disassembler視窗就會顯示跳轉的路徑了。

2、讓OD顯示MFC42.DLL中的函式
    如果程式是用MFC進行的動態編譯,那麼在OD中將只能顯示MFC42.DLL中的函式為:
00410E40  |.  E8 43000000  CALL    <JMP.&MFC42.#1576>
1576是函式在MFC42.DLL中的序號。開啟Debug\Select import libraries,單擊彈出的對話
框中“Add”,在彈出的開啟檔案對話方塊中選擇“MFC42.LIB”並開啟,重新載入MFC程式,
你就可以看見函式名稱變為:
00410E40  |.  E8 43000000  CALL    <JMP.&MFC42.#1576_?AfxWinMain@@Y>
IDA中分析出了來的東西一樣了!呵呵,以後不用等待IDA的“細嚼慢嚥”也可以輕鬆搞定
MFC程式了。其他的DLL類似,如果有序號,可以在VC的LIB目錄中找到相關的.LIB檔案,加
到OD中便可。如果你沒有“MFC42.DLL”,你可以的到新論壇的下載區找,我已經上傳到那
裡了。

3、讓OD輕鬆躲過“ANTI-DEBUG”
    很多“ANTI-DEBUG”的程式都是在程式開始時來檢查是否安裝偵錯程式的。用這種特性我
們可以輕鬆的用OD的“Attach”繞過檢查部分。如“X語言”,如果你喲內TRW2K/S-ICE/OD
直接載入它的話,程式回警告你安裝了偵錯程式並結束。但是我們在“X語言”開啟後再執行
OD,並用“Attach”繫上它就就可以了,輕鬆透過檢查。而且在OD繫上它後仍然可以用
CTRL+A進行分析。如此一來,快哉!:)

4、輕鬆對付呼叫“MessageBoxA”以及類似的模態對話方塊的程式
    很多人都認為OD不好攔截“MessageBoxA”這類API函式。其實我們有個很簡單的辦法將
API攔截下來,並且快速找到比較地點/主演算法地點。首先用OD載入目標程式,如果不能載入,
用上面的方法“Attach”目標程式。然後,F9執行目標程式,並且有意讓目標程式顯示“
MessageBox”,然後切換到OD中,F12暫停,如
0041201F  |>  53            PUSH    EBX                    ; /Style
00412020  |.  57            PUSH    EDI                    ; |Title
00412021  |.  FF75 08      PUSH    [ARG.1]                ; |Text
00412024  |.  FF75 F4      PUSH    [LOCAL.3]              ; |hOwner
00412027  |.  FF15 A8534100 CALL    DWORD PTR DS:[4153A8]  ; \MessageBoxA
0041202D  |.  85F6          TEST    ESI, ESI              ; 停在此處
0041202F  |.  8BF8          MOV    EDI, EAX
00412031  |.  74 05        JE      SHORT 1551-CRA.00412038
F8單步一下,切換到“MessageBox”中,確認,被OD中斷。我們可以看見上面的程式碼41201F
處有一個“〉”,說明可以從某段程式碼跳轉到此處,我們選擇41201F這一行,在
“Information”欄看見一句“JUMP FROM 412003”,右鍵單擊,選擇“GO TO JUMP FROM
412003”。回到412003,一般都是條件跳轉,上面的內容就是比較的地方啦。:)

5、使用OD的TRACK功能
    OD擁有強大的TRACK功能,在分析演算法時十分有用。首先我們要設定OD的TRACK緩衝區大
小,選擇Option\Debugging Option,在彈出的對話方塊中選擇TRACK頁,
“Size of run track buffer(byte/record)”,緩衝區大小,當然約大約好。其他的設定
在我以前的OLLYDBG.INI中都已經設定好了。然後,開啟目標程式,在DEBUG中選擇“Open
or clear run track”。然後我們就可以用CTRL+F11或CTRL+F12開啟“Track into”和“
Track over”了。當我們暫停程式的時候,可以用小鍵盤上的“+”,“-”,“*”來控制
TRACK功能了。
“Track into”和執行類似,但是記錄所有指令以及暫存器變化。並且會自動進入所有的
CALL中。
“Track over”和“Track into”類似,但是不進入CALL
“+”用來顯示TRACK緩衝區中的下一條指令
“-”用來顯示TRACK緩衝區中的上一條指令
“*”用來發返回當前指令

6、不是技巧的技巧
    當你遇到花指令的時候一定會很頭痛。但是如果你用OD進行分析的時候就會輕鬆得多。
OD會自動標識出無效指令,即花指令。如果OD沒有正確識別,你還可以用CTRL+↑/↓來單個
位元組的移動。可以很有效的識別出花指令的所在。

後記
    本人腦袋不太好使,一時記不起所有內容,以後想起來再貼。轉貼時請保持本文的完整。

相關文章