前言
在OD中可以設置條件斷點,通過表達式對字符串數據進行比較,比如在CreateFile打開某個特定文件的時候讓調試器中斷。但是在x32dbg、x64dbg中因為表達式只支持整數,不支持字符串和其它數據,所以不能像OD設置條件斷點一樣來比較兩個字符串是否相等。x64dbg 設置條件斷點,只能用取內存數據這種折中的方式來實現。但是使用這種方法,如果比較的字符串長度過長就會比較尷尬,最好的辦法應該還是通過插件來實現比較方便。
寫個測試程序簡單演示下:
1 #include "stdafx.h" 2 #include <windows.h> 3 4 int _tmain(int argc, _TCHAR* argv[]) 5 { 6 HANDLE hFile1 = CreateFileA("0.txt", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); 7 if (hFile1) 8 { 9 CloseHandle(hFile1); 10 } 11 12 HANDLE hFile2 = CreateFileA("1.txt", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); 13 if (hFile2) 14 { 15 CloseHandle(hFile2); 16 } 17 18 return 0; 19 }
啟動測試程序,在“CreateFileA”下斷點,然后右鍵“修改”或者快捷鍵“Shift+F2”添加條件斷點表達式。設置當打開的文件是“1.txt”的時候讓調試器中斷,同時在日志窗口輸出每次執行“CreateFileA”時打開的文件名稱。
可以看到當打開第一個文件“0.txt”的時候調試器沒有發生中斷,而打開“1.txt”的時候因為條件表達式滿足,調試器中斷。
等有時間打算出一個x32、x64dbg使用手冊,應該就是參照官方文檔記錄一些常用指令、表達式書寫方式、使用技巧啥的,感興趣的可以關注下博客:)。