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

时间:2018-07-08 21:52:18

标签: windbg breakpoints conditional-breakpoint

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

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

我使用上面的命令来忽略从ffff802312345678ffff802387654321到目标位置(ffff802387654330)的每次访问,因此每次从其他地方进行访问时,我都会被通知。

但是问题是,它在其他位置的ffff802387654321ffff802387654330上仍然断开。

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

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

但是它仍然行不通。

所以我的问题是:

  • 上述命令出了什么问题,我怎么能达到预期的效果 结果?

1 个答案:

答案 0 :(得分:1)

没有|| 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