首页 > 编程知识 正文

键盘钩子回调函数(键盘钩子ring0)

时间:2023-05-04 10:38:55 阅读:72111 作者:700

虎克原理

Windows的大多数APP应用程序都基于消息传递机制,每个消息都有不同的消息传递过程函数。

Windows操作系统提供的挂接机制的作用是监听和监视这些系统中的消息。 Windows挂钩种类繁多,可以应对各种新闻。

根据吊钩的作用范围,可分为局部吊钩和全局吊钩。 本地挂接面向线程

全局挂接是作用于整个系统的基于消息的APP应用程序。 全局挂接必须使用DLL文件在DLL中实现相应的挂接函数。

在操作系统中安装全局挂接后,当进程收到可以发出挂接的消息时,操作系统会自动或强制将全局挂接的DLL文件加载到进程中。

因此,也可以通过设置消息挂钩来实现DLL注入的目的。

胡克函数

HHOOK SetWindowsHookEx (

int idHook,

HOOKPROC lpfn,

HINSTANCE hMod,

dword dw萨德

);

删除挂接函数

BOOL UnhookWindowsHookEx (

HHOOK hhk

);

参数介绍

此函数的返回值是挂接句柄。 参数介绍如下。

lpfn:指定Hook函数的地址。 如果dwThreadId参数设置为0或设置为另一个进程的线程ID,则lpfn属于DLL的函数过程。

如果dwThreadId是当前进程的线程ID,则lpfn可以指向当前进程模块中的函数。 当然,也可以指向DLL模块中的函数。

指定包含hMod:挂接函数的模块的模块句柄。 也就是说,lpfn所在的模块句柄。 如果dwThreadId是当前进程的线程ID,而lpfn指向的函数位于当前进程中,

此参数设置为NULL。

dwThreadId:指定要挂接的线程ID号。 如果设置为0,则在所有基于消息的线程中挂接。 如果设置了特定线程ID,则表示已在指定线程上挂接。

此参数影响上述两个参数的可能值,同时确定挂钩是全局挂钩还是本地挂钩。

idHook:此参数表示挂接的类型。 常用的有:

WH_CALLWNDPROC //当目标线程调用SendMessage发送消息时,将调用挂接函数。

当返回wh_callwndprocret//sendmessage时,将调用挂接函数。

在WH_KEYBOARD //消息队列中查询WM_KEYUP或WM_KEYDOWN时。

WH_GETMESSAGE //目标线程调用GetMessage或PeekMessage时

WH_MOUSE //在查询消息队列中的鼠标事件消息时。

如果挂接函数处理消息后可以继续向目标窗口传递消息,则必须选择继续传递消息。 传递消息的函数定义如下:

LRESULT CallNextHookEx (

HHOOK hhk,//handle to current hook

int nCode,//hookcodepassedtohookprocedure

WPARAM wParam,//value passed to hook procedure

lparam lparam//valuepassedtohookprocedure

);

键盘源:

3359 download.csdn.net/download/QQ _ 37957965/10800911

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。