我正在尝试使用以下语法在 Windbg 中的 Windows 内核模式下设置条件硬件断点:
ba w1 ffff802312345678 "j(@rip==ffff802387654321 || @rip==ffff802387654330) 'gc';''"
我使用上面的命令是为了忽略从ffff802387654321
或ffff802387654330
对我的目标位置(ffff802312345678
(的每次访问,所以每次从其他地方访问时,我都会收到通知。
但问题是,它仍然在其他位置ffff802387654321
或ffff802387654330
中断。
我还阅读了有关">条件断点和寄存器符号扩展"的官方文档,并测试了类似以下内容:
ba w1 ffff802312345678 "j((@rip & 0xffffffffffffffff)=ffff802387654321 || (@rip & 0xffffffffffffffff)=ffff802387654330) 'gc';''"
但它仍然行不通。
所以我的问题是:
- 上面的命令有什么问题,我怎样才能达到所需的目标 结果?
没有||
MASM 运算符。这是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