2018年9月18日 星期二

x64dbg - 條件中斷

一般設置中斷點時,只要程式執行到這都會被斷下,如果我只要在某些條件才要斷下,就顯得非常不方便,這時x64dbg就有提供完善的條件中斷功能。


條件中斷的語法

-EAX == 0x1 : 只要EAX = 0x1 ,就會被斷下,否則就繼續執行。

-[EAX] == 0x1 : EAX要是一個位址,這個位址裡面存放的值 (4 bytes),要等於0x1才會被斷下。

-byte:[EAX] == 0x1 : EAX要是一個位址,這個位址裡面存放的值 (1 bytes),要等於0x1才會被斷下。

-word:[EAX] == 0x1 : EAX要是一個位址,這個位址裡面存放的值 (2 bytes),要等於0x1才會被斷下。

-qword:[EAX] == 0x1 : EAX要是一個位址,這個位址裡面存放的值 (8 bytes),要等於0x1才會被斷下。


實作

在設置條件中斷 前,要先在要設定的位址 (0x40150E)按F2 (中斷點),然後再按右鍵,選擇Breakpoint -> Edit。



跳出編輯的視窗後,可以在Break Condition這個欄位填入想要設置的條件,最後再按Save,就設置成功了。



設置word:[EAX] 範例

跟前面的步驟都一樣,不過語法需要修改word:[EDI] == 0x3A43,EDI (0xCB21F0)必須是一個有效位址,如果不是,條件中斷就沒有效用了,每次執行到這裡,就會跟一般的中斷點一樣被斷下。



最後提醒一下,word是指0xCB21F0的前2 bytes (0x3A43)。