1. 程式人生 > >OD條件與訊息斷點的設定方法 (轉)

OD條件與訊息斷點的設定方法 (轉)


編寫整理:Coderui

一、條件斷點:

使用方法(如):
在當前行按[Shift+F2]鍵->條件斷點(這個不太好用,因為程式BUG偶爾失效)。
在當前行按[Shift+F4]鍵->條件記錄斷點(只要設定上條件語句和按什麼條件生效就可以了)。

條件語句(如):
EAX == 00401000                      ; 當EAX的值為00401000時。
[EAX] == 05201314                    ; 比如EAX的值為00401000,而地址00401000處所指向的值等於5201314時,即EAX的值表示為指標。
[[EAX]] == 05201314                  ; 比如EAX的值為00401000,地址00401000處所指向的值為00402000,而地址00402000處所指向的值等於5201314時,即EAX的值表示為指標的指標。
EAX == 05201314 && EBX == 0x05201314 ; 當EAX的值等於5201314(十進位制),並且EBX的值等於5201314(十六進位制)時。
[EBP+8] == WM_COMMAND                ;
[[EBP+8]] == 05201314                ;
byte ptr[EAX] == 'y'                 ;
[EAX] == "coderui"                   ; 比如EAX的值為00401000,而地址00401000處所指向的字串為“coderui”時,即EAX的值表示為指標。
[[EAX+4]+4] == WM_LBUTTONUP          ;

二、訊息斷點:

原理:就是在訊息函式上設定條件斷點。

步驟:
1、使用[Ctrl+G]撥出“表示式跟隨視窗”,輸入“TranslateMessage”,然後回車。
2、在“轉到”的位置上使用[Shift+F4]撥出“條件記錄斷點設定視窗”。
3、在“條件”中輸入如下語句“[[ESP+4]]==當前按鈕控制代碼&&[[ESP+4]+4]==WM_LBUTTONUP”。
4、把“暫停程式”設定為“按條件”,其他都為預設,然後確定。
5、點選按鈕後,程式會停在“TranslateMessage”函式的系統領空中。
6、檢視記憶體,對程式碼段下“記憶體訪問斷點”,然後經過多次[F9](執行),就會找到關鍵的處理程式碼了。