简单的Windows消息钩取

本文介绍了一种使用Windows消息钩取机制监听notepad键盘输入的方法,通过编写dll并注入进程,实现将键盘消息记录到文件而不影响notepad的正常回显。详细阐述了回调函数KeyboardProc的逻辑以及挂钩和卸钩的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Windows事件驱动的媒介是消息,而消息的传递则存在破绽。

一、What should I do?

监听notepad键盘输入,并存入文件“input.txt",而且用户不能察觉出来(即notepad正常回显字符)。

二、程序思路

  • 利用Windows消息钩取机制,向Windows系统注册一个消息钩子,该钩子存在于自己编写的dll中,一旦监听到来自notepad的键盘消息就将其存入文件。
  • 值得一提的是,这里还顺便向所有发生键盘消息的进程注入了自己的dll文件。

三、关键语句实现

整个程序的关键就是这个包含了消息钩子过程的dll文件的编写,然后主程序调用此dll文件中的消息钩子完成键盘监听。

Hookdll:
我这里主要谈谈回调函数KeyboardProc,也就是钩子的处理逻辑。
回调函数是在消息发生时操作系统调用的一种用户自定义函数,它负责告诉操作系统怎样处理消息,当然这里只针对键盘消息。

先说说参数:ncode指示按键状态,wParam存放虚拟键值,lParam对键盘状态进行位标识。

程序逻辑是这样的:当ncode大于等于0且lParam最高位为1时,用户有按键动作,这时我们调用GetModuleFileNameA函数获取发出此键盘消息进程的绝对路径,然后经过一个_tcsrchr函数定位到此进程可执行文件名,若可执行文件名等于”notepad++.exe"(我这里采用了宏定义DEF_P

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值