通过内核调试查看当前的输入桌面对象

通过本地内核调试或者用户双机调试查看当前的用户输入桌面

在windbg中搜索win32kbase内核模块的导出符号,找到类似如下的符号

x win32kbase!*grpdeskRitInput*

最终定位到的当前桌面对象名称为Default桌面

0: kd> x win32kbase!*grpdeskRitInput*
fffff643`216d6c48 win32kbase!grpdeskRitInput = <no type information>
0: kd> dqs fffff643`216d6c48 l1
fffff643`216d6c48 ffffcc04`b53ffcf0
0: kd> !object ffffcc04`b53ffcf0
Object: ffffcc04b53ffcf0 Type: (ffffcc04b0d50d20) Desktop
ObjectHeader: ffffcc04b53ffcc0 (new version)
HandleCount: 87 PointerCount: 2812903
Directory Object: 00000000 Name: Default

 

上面结果是使用livekd本地内核调试时找到的。本地内核可以查看内核中的内存,相当于给内核做了快照,获取到的进程信息都不是实时的,要获取刚创建的进程,需要重启一次windbg。

也可以通过双机调试查看。

获取当前顶层窗口使用win32kfull!NtUserGetForegroundWindow,里面会寻找

win32kbase!gpqForeground变量

尝试在双机调试时对此函数下断点然后CTRL+ALT+DELETE查看是否调用这个函数。

 

posted @ 2023-06-24 18:53  psj00  阅读(64)  评论(0)    收藏  举报