请问sysenter指令进入KiFastCallEntry例程的调试过程
Windows内核调试
请问sysenter指令进入KiFastCallEntry例程的调试过程
小兵
2010-04-11, 12:45 下午
看过《软件调试》中用ReadFile函数说明Windows系统的调用过程后,想通过Windbg看到sysenter指令进入KiFastCallEntry例程中的调试过程。
(
//为了把问题说清楚,增加以下说明 。双机OS都是: Winxp SP2
程序执行到ring3的NtReadFile函数调用sysenter指令时,输入t后,Windbg没有进入ring0,而是已执行后返回NTdll中。
请问Windbg能否跟踪这个NtReadFile函数进入KiFastCallEntry例程的执行过程?
)
我通过双机调试,昨天试了一天都没成功。
不知道有什么解决办法,谢谢!
Re: 请问sysenter指令进入KiFastCallEntry例程的调试过程
SuperMouse
2010-04-11, 19:58 下午
这个不仅仅是要“双机调试”,而是要进行双机的内核调试。如果仅仅是在用户态进行双机调试,自然是不能进入到内核态的代码的。
Re: 请问sysenter指令进入KiFastCallEntry例程的调试过程
小兵
2010-04-12, 13:32 下午
实验环境就是 "双机的内核调试" ,呵呵
这个应该不是问题的原因所在。
谢谢!
Re: 请问sysenter指令进入KiFastCallEntry例程的调试过程
compiler
2010-04-12, 18:22 下午
sysenter指令 是不能t的 跟我当初的想法一样
应该是在KiFastCallEntry下断点
不过断点命中之后要尽快去掉,应为这个系统会频繁调用
Re: 请问sysenter指令进入KiFastCallEntry例程的调试过程
小兵
2010-04-14, 10:57 上午
是呀,直觉上感觉可以"t"进去,呵呵。
谢谢!
一个相关问题是从ring0返回ring3时,在函数KiSystemCallExit2中,应该执行
sysexit
指令。(《软件调试》P181)
但是对KiSystemCallExit2和KiSystemCallExit3都下断点后, 每次刚进入KiSystemCallExit2(执行第一条指令后), 就直接返回ntdll中。
请问这是什么原因? 谢谢大家帮助!
Re: 请问sysenter指令进入KiFastCallEntry例程的调试过程
compiler
2010-04-15, 12:24 下午
ntdll有断点没去掉吧?
Re: 请问sysenter指令进入KiFastCallEntry例程的调试过程
小兵
2010-04-15, 18:39 下午
在ntdll没有设置断点,并且我觉得和ntdll断点没有关系,因为KiSystemCallExit2在ring0。
可能在ring0还需要设置什么断点,在刚进入KiSystemCallExit2输入't'指令后,就不会直接返回到ntdll中,而是执行sysexit指令。
问题是:
在ring0还要设置什么断点呀?
天呀!呵呵
Re: 请问sysenter指令进入KiFastCallEntry例程的调试过程
小兵
2010-04-16, 14:59 下午
我用命令u查看KiSystemCallExit2中sysexit 指令的地址,然后直接对该地址下断点,就可以了。
不知道有其它方法吗?