线程专用钩子和全局钩子的区别

其实就是全局和局部的区别

如果可以用线程Hook实现就最好用线程Hook

因为Hook技术用的不好会大大降低整个Windows系统的性能

这也是为什么WinCE不支持HOOK的原因了

至于键盘HOOK用SetWindowsHookEx带WH_KEYBOARD参数就可以了

比如你做一个全局的键盘HOOK,这样不管当前激活的应用程序是什么

只要有键盘消息,windows都会先问问你的Hook Proc,

“老第,这个键如何啊?”

完了你的Hook Proc拿过来左看右看,

最后说

“哎呀,我不要这个键,还给你”

你说累不累啊。

消息队列是以线程为基础的.一个局部HOOK勾挂的是一个进程内所有线程的消息.

此类实现由于不涉及进程CONTEXT切换,是轻量极的HOOK.

全局的HOOK会映射到所有加载USER32.DLL的进程中,其实是USER32.DLL为这些进程调用LOADLIBRARY来加载HOOK所在的DLL.

并且在所有的消息在被送到消息处理前先调用HOOKPROC.当HOOKPROC决定该消息已经被处理完毕,那么就从线程消息队列里去除该消息.

HOOKPROC本身的调用按照被加载的先后次序从后到前备调用.

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-31 20:47:02

线程专用钩子和全局钩子的区别的相关文章

Django框架(十六)—— forms组件、局部钩子、全局钩子

forms组件.局部钩子.全局钩子 一.什么是forms组件 forms组件就是一个类,可以检测前端传来的数据,是否合法. 例如,前端传来的邮箱数据,判断邮件格式对不对,用户名中不能以什么开头,等等 二.forms组件的使用 1.使用语法 from django.shortcuts import render, HttpResponse from django import forms # 1.先写一个类,继承Form class MyForm(forms.Form): # 定义一个属性,可以用

校验字段的局部钩子和全局钩子源码分析

view中使用is_valid()方法: def post(self, request, *args, **kwargs): # 新增 response = {'status': 100, 'msg': '新增成功'} book_ser = BookSerializer(data=request.data) # 提交的字段校验通过 if book_ser.is_valid(): book_ser.save() response['book'] = book_ser.data else: resp

Django框架(十四)-- forms组件、局部钩子、全局钩子

一.什么是forms组件 forms组件就是一个类,可以检测前端传来的数据,是否合法. 例如,前端传来的邮箱数据,判断邮件格式对不对,用户名中不能以什么开头,等等 二.forms组件的使用 1.使用语法 from django.shortcuts import render, HttpResponse from django import forms # 1.先写一个类,继承Form class MyForm(forms.Form): # 定义一个属性,可以用来校验字符串类型 # 限制最大长度是

利用debug钩子拦截全局钩子,经典反黑客技术

// 键盘钩子消息处理过程LRESULT CALLBACK DebugProc ( int nCode, WPARAM wParam, LPARAM lParam ){ if ( nCode == HC_ACTION ) {  PDEBUGHOOKINFO pDebugHookInfo = (PDEBUGHOOKINFO)lParam ;  switch ( wParam )  {  case WH_KEYBOARD:  case WH_MOUSE:   {    // 如果钩子不是由当前DEB

C#全局钩子和局部钩子记录

源自:https://blog.csdn.net/programvae/article/details/80292076 最近碰巧要使用键盘钩子,于是在网上搜索了一番,发现大多数博客的文章都是雷同的,根本就没有讲清楚全局钩子和局部钩子的区别,于是特开一贴,讲全局钩子和局部钩子捋一捋.也供后面的人学习.    因为大部分应用都应该采用局部钩子,所以我这儿使用的是局部钩子,而全局钩子的例子网上到处都是.    大部分网上参考文章都只是展示了全局钩子的写法,而线程钩子的写法和介绍相对少一些,特别是关键

全局钩子具体解释

全局钩子具体解释 监控程序的实现      我们发现一些木马或其它病毒程序经常会将我们的键盘或鼠标的操作消息记录下来然后再将它发到他们指定的地方以实现监听.这样的功能其它是利用了全局钩子将鼠标或键盘消息进行了截取,从而获得了操作的消息.要得到鼠标和键盘的控制权,我们要用SetWindowsHookEx这个函数: HHOOK SetWindowsHookEx(    int idHook,        // type of hook to install    HOOKPROC lpfn,   

全局钩子详细解释

全局钩子具体解释 监控程序的实现      我们发现一些木马或其它病毒程序经常会将我们的键盘或鼠标的操作消息记录下来然后再将它发到他们指定的地方以实现监听.这样的功能其它是利用了全局钩子将鼠标或键盘消息进行了截取,从而获得了操作的消息.要得到鼠标和键盘的控制权,我们要用SetWindowsHookEx这个函数: HHOOK SetWindowsHookEx(    int idHook,        // type of hook to install    HOOKPROC lpfn,   

钩子编程(HOOK) 安装系统全局钩子

MySQL使用的是插件式存储引擎. 主要包括存储引擎有:MyISAM,Innodb,NDB Cluster,Maria,Falcon,Memory,Archive,Merge,Federated. 其中最为广泛的是MyISAM 和Innodb两种存储引擎,所以接下来对它们做简单介绍. MyISAM 存储引擎简介 MyISAM 存储引擎的表存储在数据库中,每一个表都被存放为三个以表名命名的物理文件. 1.(.frm文件)任何存储引擎都不可缺少的存放表结构定义信息的文件 2.(.MYD文件)存放表数

常见注入手法第四讲,SetWindowsHookEx全局钩子注入.以及注入QQ32位实战.

常见注入手法第四讲,SetWindowsHookEx全局钩子注入.以及注入QQ32位实战. PS:上面是操作.最后是原理 一丶需要了解的API 使用全局钩子注入.我们需要了解几个WindowsAPI. 不需要太多. 1. 设置钩子API HHOOK WINAPI SetWindowsHookEx( _In_ int idHook, 设置钩子的类型.意思就是我要设置的钩子是什么钩子. 可以是监视窗口过程.可以是监视消息队列. _In_ HOOKPROC lpfn, 根据钩子类型.设置不同的回调函数