我试图通过使用以下语法在Windbg中的Windows内核模式上设置条件硬件断点:
ba w1 ffff802312345678 "j(@rip==ffff802387654321 || @rip==ffff802387654330) 'gc';''"
我使用上面的命令来忽略从ffff802312345678
或ffff802387654321
到目标位置(ffff802387654330
)的每次访问,因此每次从其他地方进行访问时,我都会被通知。
但是问题是,它在其他位置的ffff802387654321
或ffff802387654330
上仍然断开。
我还阅读了有关“ 条件断点和注册符号扩展名”的official documents,并且还测试了以下内容:
ba w1 ffff802312345678 "j((@rip & 0xffffffffffffffff)=ffff802387654321 || (@rip & 0xffffffffffffffff)=ffff802387654330) 'gc';''"
但是它仍然行不通。
所以我的问题是:
答案 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