【逆向】x64dbg設置條件斷點 比較內存字符串是否相等


前言

在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使用手冊,應該就是參照官方文檔記錄一些常用指令、表達式書寫方式、使用技巧啥的,感興趣的可以關注下博客:)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM