Windows消息钩子[键盘监控]

这篇博客介绍了如何利用Windows的SetWindowsHookEx API函数创建一个全局键盘钩子,以实现键盘消息的监控和记录。作者首先探讨了钩子的工作原理,然后展示了钩子DLL的编写过程,包括钩子过程如何拦截键盘消息并将其记录到文件中。最后,提到了针对特定线程的钩子可能需要手动DLL注入,而全局钩子则避免了这个问题。

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

之前看书,看到一眼消息钩子,一直没实践,现在有空弄了下,

主要原理是利用windows自带SetWindowsHookEx API函数

HHOOK SetWindowsHookEx(

int idHook,                     //hook形式

HOOKPROC lpfn           //hook过程

HINSTANCE hmod        //钩子所属的dll句柄

DWORD dwThreadId    //要钩取的线程ID 全局钩子则传入0

)   

其主要工作原理为,Windows发生相关消息时,会将含有钩子过程的

DLL强制注入目标进程的内存空间中,并且执行DLL中的钩子过程。

可钩取的消息有多种,这里我们试验WH_KEYBOARD尝试钩取windows

的键盘消息,来实现一个简单的键盘记录器。

我开始想要使用控制台程序下钩,貌似不行,控制台没有消息队列的原因吗?

之后改用win32后可以正常使用了

其核心是存在钩子过程的dll编写,代码如下

// dllmain.cpp : 定义 DLL 应用程序的入口点。
#include "stdafx.h"
#include<stdio.h>
#include<Windows.h>
#include "hook.cpp"
#define _CRT_SECURE_NO_WARNINGS
HINSTANCE hinstance;//dll实例
HHOOK hhook;//钩子实例
HANDLE hfile;
FILE* pFile = NULL;
BOOL APIENTRY DllMain( HMODULE hModu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值