忽略 Windbg 条件断点中的某些位置

Ignore some locations in Windbg Conditional breakpoints

我正在尝试使用以下语法在 Windbg 的 Windows 内核模式上设置条件硬件断点:

ba w1 ffff802312345678 "j(@rip==ffff802387654321 || @rip==ffff802387654330) 'gc';''"

我使用上面的命令是为了忽略从 ffff802387654321ffff802387654330 对我的目标位置 (ffff802312345678) 的每次访问,所以每次从其他地方访问时,然后我会收到通知。

但问题是,它仍然在 ffff802387654321ffff802387654330 等其他位置中断。

我还阅读了 official documents 关于“条件断点和注册符号扩展”的内容,并且还测试了如下内容:

ba w1 ffff802312345678 "j((@rip & 0xffffffffffffffff)=ffff802387654321 || (@rip & 0xffffffffffffffff)=ffff802387654330) 'gc';''"

但是还是不行。

所以我的问题是:

没有||MASM operator。这是 or.

使用

ba w1 ffff802312345678 "j(@rip==ffff802387654321 or @rip==ffff802387654330) 'gc';''"

我没有重现你的确切案例,而是一个更简单的例子:

0:000> r rip
rip=0000000076db6fb0
0:000> j (@rip==0000000076db6fb0 || @rip==0) '.echo 5';'.echo 6"
Numeric expression missing from '| @rip==0) '.echo 5';'.echo 6"'
0:000> j (@rip==0000000076db6fb0 or @rip==0) '.echo 5';'.echo 6"
5