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”?;氐?12003,一般都是條件跳轉,上面的內容就是比較的地方啦。:)
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+↑/↓來單個
字節的移動??梢院苡行У淖R別出花指令的所在。
后記
本人腦袋不太好使,一時記不起所有內容,以后想起來再貼。轉貼時請保持本文的完整。
(編輯:天命孤獨)
新聞熱點
疑難解答
圖片精選