一點一滴的積累,也就會了.
之所以選擇ollydbg
1.我的os是winXP,無法使用trw2000,而softice裝了多次均未成功,還藍色畫面當機多次.鬱悶.
2.友好的gui介面,不像softice.可以邊幹活邊聽歌,不像softice,把整個os都掛起了.多用兩次,連時間都不知道了.
3.強大的記憶體檢視功能,再不用什麼-d了,而且跳轉方便,爽!一目瞭然.
4.強大的右鍵選單功能
by draren
10.14
ollydbg的介面:
選單:
檔案:
1.其中包括該選單的下部有上次開啟的紀錄,該紀錄儲存有上次未清除的斷點.
2.附加.對付那些Anti-Debug程式.先執行程式,再執行od,檔案-->附加.
檢視:
1.執行模組(Alt+E),檢視程式使用的動態連結庫
2.檢視斷點.Alt+B
除錯:
1.執行(F9)載入程式後,執行!
2.暫停(F12)
3.單步進入(F7)遇見CALL進入!進入該子程式.
4.單步跳過(F8)遇見CALL不進去!
5.執行到返回(ALT+F9)就是執行到該子程的返回語句
ollydbg的16進位制編輯功能.類似與hiew,hex workshop
檢視-->檔案
二進位制檔案編輯功能.檢視-->檔案,開啟的檔案是二進位制顯示.選中要改變的機器指令,空格,修改,右擊-->儲存.
ollydbg的四個區域
左上角是cpu視窗,分別是地址,機器碼,彙編程式碼,註釋; 註釋新增方便,而且還能即時顯示函式的呼叫結果,返回值.
右上角是暫存器視窗,但不僅僅反映暫存器的狀況,還有好多東東; 雙擊即可改變Eflag的值,對於暫存器,指令執行後發生改變的暫存器會用紅色顯示.
cpu視窗下面還有一個小視窗,顯示當前操作改變的暫存器狀態. 不錯;
左下角是記憶體視窗.可以ascii或者unicode兩種方式顯示記憶體資訊;
右下角的是當前堆疊情況,還有註釋啊.
F3選擇開啟程式.
使用
F9執行程式.
下斷點:
1.對函式下下斷點
在程式碼區右擊-->搜尋-->當前模組中的名稱(ctrl+N),在跳出來的對話方塊中選擇需要下的斷點函式.->右擊->查詢匯入參考(enter),按F2下斷點.
如果有多個地方呼叫了該函式,
2.在需要的地方下斷點 F2
新增註釋:
在程式碼區第四列,右擊-->註釋
檢視記憶體地址
右擊記憶體地址列-->前往-->輸入要檢視的記憶體地址
在函式lstrlen的註釋的上方,有一個變數string,當執行到該函式的時候,string後面會出現lstrlen函式的引數字串.在實際使用中一般是輸入的字串.(很好用哦)
類似的還有lstrcmp,上面有string1,string2能夠顯示將要比較的兩個字串.
另外,一般在執行getwindowtext等函式後,右邊暫存器列,eax會顯示函式的返回值,即取到的內容.同時記憶體中也會有顯示.
在反彙編中選中一條命令,如果其中有用到記憶體中的地址,右擊-->在轉存中跟隨-->直接常數
此時記憶體地址會顯示指令中引用到的記憶體字元
複製功能十分強大.直接選擇要複製的內容.右擊-->複製-->檔案or剪貼簿
ollydbg的條件斷點可以按暫存器,儲存器,訊息(必須是訊息的數字,如wm_command就是111)等等設斷,非常強大,一旦設了之後記錄到檔案中,下次restart程式還能用,不用拿筆記,很方便。
顯示跳轉路進:
選項-->除錯設定-->cpu頁-->顯示跳轉的方向,顯示跳轉的路徑,如果跳轉沒有實現則顯示灰色路徑
在cpu視窗中,機器碼的前面顯示">"符號.同時,在cpu視窗下的小縫中會顯示跳轉路徑,從何跳轉而來.右擊-->前往...一般都是條件跳轉,上面的內容就是比較的地方啦。:)
跟蹤功能:
選項-->除錯跟蹤-->跟蹤:設定執行跟蹤的快取大小.越大越好.
除錯-->開啟或清除執行跟蹤
然後我們就可以用CTRL+F11或CTRL+F12開啟“跟蹤進入”和“ 跟蹤跳過”了。當我們暫停程式的時候,可以用小鍵盤上的“+”,“-”,“*”來控制跟蹤功能了。
其中,“跟蹤進入”和執行類似,但是記錄所有指令以及暫存器變化。並且會自動進入所有的CALL中。
“ 跟蹤跳過”和“跟蹤進入”類似,但是不進入CALL
“+”用來顯示跟蹤緩衝區中的下一條指令
“-”用來顯示跟蹤緩衝區中的上一條指令
“*”用來發返回當前指令
讓OD顯示MFC42.DLL中的函式
開啟除錯-->選擇匯入庫-->新增-->選擇MFC43.LIB加入.重新載入MFC程式,就可以看到call後面的api函式了.
動態暫停:(以messagebox為例)
先執行目標程式,再執行od,選擇檔案-->附加.在目標程式執行出現對話方塊時,切換至od,F12暫停.
字串參考:
在彙編程式碼區,右擊-->搜尋-->字元參考
更改二進位制檔案:
方法1.檢視-->檔案,開啟檔案,找到欲修改的偏移,使用機器碼修改,然後右擊儲存檔案.缺點是需要使用其他軟體來獲取偏移地址.
方法2.直接在反彙編程式碼區更改,這時可以使用匯編程式碼更改,不用記機器碼.完了.右擊-->複製到可執行檔案-->儲存檔案.很是方便哪!
關於虛擬地址和偏移地址:
ollydbg果然強大,太強大了,在欲修改的指令處右擊-->複製到可執行檔案,彈出視窗中游標所在行即是欲修改的指令所在的偏移地址,右擊-->彙編,直接修改彙編指令,不用記機器碼,又不用虛擬地址到偏移地址的轉換.改完後儲存檔案.爽丫!
找到要更改的地址,右擊-->指定-->pe檔案頭,選擇位元組,右擊-->修改位元組.
如何儲存?
問題:
1.不知道如何確定檔案地址和虛擬地址的轉換?
(10.23解決.draren)
2.如何更改pe檔案頭中(或者軟體的資料部分中的位元組),如何儲存?
3.如何利用ollydbg找到各個控制程式碼資訊.比如選單資訊等.