如何向一个未处于前端的窗口(也就是未激活)发送键盘或鼠标消息?

2022-03-22 科技 212阅读
正统来讲,这个问题没有实际意义……
WIN的键盘消息队列是“队列”,而不是独立的一条消息,比如按下键会产生WM_KEYDOWN或WM_SYSKEYDOWN消息
但是这会自动被放置在当前键盘聚焦的窗体所在线程的消息队列中,也就是说,激活窗体和非激活窗体无法一起去响应键盘消息
这也是必要的保护措施,因为目前的程序也好,系统也好,有且永远只有一个窗体是处于激活状态的(即使桌面也是窗体),电脑可不知道Atl+F4l是关闭激活窗体,还是关闭非激活窗体……

但是换一个思路来考虑,那些远程木马其实就是绕过了消息处理机制,在消息发往程序之间就接管过来……这是hook(钩子)方面了……所以真要实现的话,可以多参考一些木马方面的技术

举个大概的例子
首先替换IAT表,也就是替换进程加载另一个模块时,建立起来的模块内的函数名与它在模块内相对地址的映射关系
然后调用API函数SetWindowsHookEx()把一个你的这个应用程序定义的钩子子程安装到钩子链表中
然后调用API函数CallNextHookEx来传递这个钩子
最后在使用完之后调用UnHookWindowsHookEx()来卸载钩子
于是,你用自己的电脑,别人偷偷用你的电脑……木马基本就这么来的……
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com