跟踪NtUserGetMessage的疑惑
htron 2005-04-26 03:57:04 系统:Win2k SP4
通过KeServiceDecriptorTableShadow找到了GetMessage的内核函数,也即NtUserGetMessage,这个函数的参数跟用户态的GetMessage是一样的,现在我只关心第一个参数:pMsg.
在函数入口处开始跟,一直到RET,传入的参数都没有变化,但是到最后一条指令:
ret 10h
过去之后,堆栈恢复到调用前的位置,但是传入的参数竟然被改变了!虽然这部分现在已经出了栈,但是一条ret指令,又是怎样修改它的值呢?
唯一能够想象的,就是ret之后,地址空间也变了,但这怎么实现的呢?
请大家指教,谢谢!