Re: 比较奇怪的内核系统调用问题。

Windows内核调试

有请王宇大侠进来一下。


lazyworm 2009-07-29, 20:17 下午

最近想跟踪一下SetWindowsHooks一直到内核的执行过程。目标系统是XPSP2(vpc),

我用的方法是用户态跟踪到sysenter时,使用bp nt!KiFastCallEntry.然后执行G,当断在KifastCallEntry后,有时候按F11,或者输入T,结果初夏如下错误

Breakpoint 2 hit
nt!KiFastCallEntry:
804de6f0 b923000000      mov     ecx,23h
kd> t
Access violation - code c0000005 (!!! second chance !!!)
822b9002 298200000000    sub     dword ptr [edx],eax

看起来执行的指令不是mov ecx,23h。这是怎么回事呢。

 

Re: 比较奇怪的内核系统调用问题。


格蠹老雷 2009-07-29, 21:05 下午
这在内核调试时是可能发生的,因为在执行t命令时,调试器会设置跟踪标志,然后恢复目标系统运行,此后可能立刻发生线程切换动作,那么CPU便去执行其它线程了,如果在执行其它线程时发生异常,比如遇到断点或者发生楼主所示的访问违例,那么便可能中断到调试器中。

Re: 比较奇怪的内核系统调用问题。


lazyworm 2009-07-30, 13:08 下午

原来是这样。我记得以前用softice就不会出现这样的问题。好像是把被调试的线程优先级提高。windbg有这样的功能吗或者相似的办法来解决这个问题呢。如果老是想这样发生问题。特别是在未知的OS中的代码,很容易迷路啊。。。

 

还有一个问题就是 我最后看到调用的系统服务居然是NtUserPeekMessage(本来应该是NtUserSetWindowsHookEx)用。我一直使用的F11(或者输入命令T)。这真让我疑惑。。。

Powered by Community Server Powered by CnForums.Net