【逆向】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