有时候我们需要检查一个函数执行是否成功或者执行结果是否正确,此时我们可以通过windbg给该函数下条件断点。比如想检查IoAllocateMdl
申请的MDL地址是否正确或者是否为某一个值时断下来,其他值时让系统正常运行,可以这么来下断点:
bp nt!IoAllocateMdl "r $t0 = @rax; .if (@rax == 0x0) { .printf \"IoAllocateMdl returned: %p\\n\", @rax; } .else { g; }"
IoAllocateMdl的返回值会保存在RAX里(X64下),上面检查
IoAllocateMdl
申请的MDL的地址是否为0,如果是则打印一条输出并停下来,其他值系统正常运行。
如果需要给其他函数下断点,根据具体函数功能可进行修改。如果遇到问题,欢迎一起交流(zhxunCC)