我发现WinDbg的内核模式不支持.call
。但我似乎记得GDB允许call
进行内核模式调试。
任何人都可以:
.call
?答案 0 :(得分:0)
Raymond Chen介绍了g
如何在此实施:
Stupid debugger tricks: Calling functions and methods
回到过去,如果你想从调试器内部调用一个函数,你必须手工完成:保存寄存器,将参数压入堆栈(如果函数使用fastcall或thiscall,则将其推入寄存器) )按下ntdll!DbgBreakPoint函数的地址,将指令指针移动到要调用的函数的开头,然后点击“g”继续执行。该函数然后运行返回到ntdll!DbgBreakPoint,调试器重新获得控制权,您可以查看结果。然后恢复寄存器(包括原始指令指针)并继续调试。 (那段只是一个简短的回顾;我假设你已经知道了。)
因为ntdll,你需要一个不同的返回地址!DbgBreakPoint是一个用户模式地址。由于他提到使用{{1}},因此您需要在返回地址上设置断点。