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+↑/↓來單個
位元組的移動。可以很有效的識別出花指令的所在。
後記
本人腦袋不太好使,一時記不起所有內容,以後想起來再貼。轉貼時請保持本文的完整。