宿主系统是XP。
打开VMWare Player,进入Win2000。Win2000里开个记事本。
Xp中打开spy++,抓VMWare的窗口。其中最低层的一个窗口就是显示子操作系统的窗口是vmware-vmx.exe创建的,上层的窗口是vmplayer.exe创建的。把焦点放Win2000里,用spy++拦截这些vmware窗口的消息,发现就键盘消息拦不到,其余消息能拦到。自己写程序,用全局钩子,钩子类型试过多种,有WH_GETMESSAGE,WH_DEBUG,WH_KEYBOARD,WH_KEYBOARD_LL,发现以下情况:
用鼠标点Vmplayer的边框,然后按键,能拦截到键盘消息,(说明Dll已经注入vmplayer.exe中)。但焦点放Win2000里,拦截不到键盘消息。按照《Windows核心编程》中“使用Windows挂钩来插入DLL”一节的方法,使用WH_GETMESSAGE钩子,将Dll注入vmware-vmx.exe的进程,用冰刃查看,发现Dll注入成功。然后成功安装局部钩子(有文章说局部钩子优先级高于全局钩子),试过WH_DEBUG,WH_KEYBOARD两种类型,依然拦截键盘消息失败。用DeviceTree查看驱动层次结构,发现kbdclass驱动上面并无可疑过滤驱动程序。不知道VMWare是怎样处理键盘消息的,难道非要用Driver来拦截?
打开VMWare Player,进入Win2000。Win2000里开个记事本。
Xp中打开spy++,抓VMWare的窗口。其中最低层的一个窗口就是显示子操作系统的窗口是vmware-vmx.exe创建的,上层的窗口是vmplayer.exe创建的。把焦点放Win2000里,用spy++拦截这些vmware窗口的消息,发现就键盘消息拦不到,其余消息能拦到。自己写程序,用全局钩子,钩子类型试过多种,有WH_GETMESSAGE,WH_DEBUG,WH_KEYBOARD,WH_KEYBOARD_LL,发现以下情况:
用鼠标点Vmplayer的边框,然后按键,能拦截到键盘消息,(说明Dll已经注入vmplayer.exe中)。但焦点放Win2000里,拦截不到键盘消息。按照《Windows核心编程》中“使用Windows挂钩来插入DLL”一节的方法,使用WH_GETMESSAGE钩子,将Dll注入vmware-vmx.exe的进程,用冰刃查看,发现Dll注入成功。然后成功安装局部钩子(有文章说局部钩子优先级高于全局钩子),试过WH_DEBUG,WH_KEYBOARD两种类型,依然拦截键盘消息失败。用DeviceTree查看驱动层次结构,发现kbdclass驱动上面并无可疑过滤驱动程序。不知道VMWare是怎样处理键盘消息的,难道非要用Driver来拦截?
解决方案 »
- c语言SDK下 picture control画图的问题
- CDateTimeCtrl如果没有调用SetTime给一个时间值,默认时间就是今天的时间吗?
- webbrowser控制网页的两个问题?
- TreeCtrl上的节点,在其前边加了一个表示Checkbox的图片,然后又加了一个Icon,如果我想再增加一个Icon,应该怎么实现?
- 怎么将1个程序安装到机器的“启动”中,一启动就执行,编程怎么实现?
- 如何实现在CListView上加载多个位图?
- 求教高人--CRichEditView 中如何实现URL链接感应或类似于鼠标取词功能,WangAQ 请进
- windowsxp和windows2000的双系统,没有boot.ini 文件
- 如何在位图上添加图标(icon),实现类似MapX的功能
- 自画菜单要怎样才能修改菜单的边框?
- activex控件导入MFC静态库一变量时注册失败,请教原因。
- 请问:修改了VS2009\VC\crt下的源代码后,然后调试时候,跟进不了源文件了(把源文件恢复了也进不了)。这个怎么恢复过来?
可以参照一下
rootkit源代码中的键盘钩子KLog程序
代码下载:http://www.rootkit.com/vault/Clandestiny/Klog%201.0.zip