简单的Windows消息钩取

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值