钩子技术介绍及函数使用

实现鼠标和键盘输入禁用的钩子技术教程 钩子技术(Hooking),是一种在操作系统底层截获系统或应用程序中消息、事件和函数调用的技术。在Windows操作系统中,它允许开发者注入自定义代码,以监控或修改系统或应用程序的行为,通常用于系统级编程、安全防护、自动化测试等领域。是Windows API中一个非常重要的函数,其核心作用在于安装一个钩子(hook),用于拦截并处理特定类型的系统消息。这些消息包括但不限于键盘输入、鼠标移动等,这使得开发者能够监测和修改系统消息,进而实现特定的功能需求,如屏幕键盘、自定义输入法、游戏辅助程序等。 阅读详情

当你创建一个钩子时,WINDOWS系统会创建一个数据结构,该结构包含了您创建的钩子的信息,安装钩子则是把该结构体插入到系统钩子列表中去,注意:新插入的放置到旧的前面。当指定的钩子事件被触发后,局部钩子只需要调用进程中的钩子函数来预处理事件,全局钩子则需要把处理插入到其他地址空间,要做到这一点,就需要有一个动态连接库,把钩子函数放到库中。但有两个是例外,就是日志钩子和日志回放钩子,它是一种比较特殊的钩子,它可以挂载到系统范围内的任何进程中,而且不需要另外编写一个dll来映射到其他进程的内存空间之中(关于日志钩子,以后有机会再详细介绍)。
一、钩子的分类:
安装不同的钩子,可以截获监视不同的消息类型,有针对的对所需要的消息进行过滤和处理,钩子主要分以下几类:


   WH_CALLWNDPROC        发送到窗口的消息。由SendMessage触发
   WH_CALLWNDPROCRET     发送到窗口的消息。由SendMessage处理完成返回时触发
   WH_GETMESSAGE         发送到窗口的消息。GetMessage或PeekMessage触发
   WH_KEYBROAD           键盘钩子,键盘触发消息。WM_KEYUP或WM_KEYDOWN消息
   WH_KEYBROAD_LL        地层键盘钩子
   WH_MOUSE              鼠标钩子,查询鼠标事件消息
   WH_MOUSE_LL           低层键盘钩子
   WH_HARDWARE           非鼠标、键盘消息时
   WH_MSGFILTER          对话框、菜单或滚动条要处理一个消息时。该钩子是局部的。
   WH_SYSMSGFILTER       同WH_MSGFILTER一样,系统范围的。
   WH_DEBUG              调试钩子,用来给钩子函数除错
   WH_JOURNALRECORD      监视和记录输入事件
   WH_JOURNALPLAYBACK    回放用WH_JOURNALRECORD记录事件
   WH_SHELL              外壳钩子,当关于WINDOWS外壳事件发生时触发.
   WH_CBT                当基于计算机的训练(CBT)事件发生时
   WH_FOREGROUNDIDLE     前台应用程序线程变成空闲时候,钩子激活。
                 


二、钩子的类型:
   全局钩子:全局钩子可以挂钩其他进程的事件,有两种:基于线程的,它将捕获其它进程中某一特定线程的事件。简言之,就是可以用来观察其它进程中的某一特定线程将发生的事件。2,系统范围的,将捕捉系统中所有进程将发生的事件消息。
   局部钩子:仅钩挂您自己进程的事件。


三、安装钩子:
  SetWindowsHookEx
    函数原形:HHOOK SetWindowsHookEx(
                       int       idHook,    // 钩子类型,见[一]
                       HOOKPROC  lpfn,      // 钩子函数地址
                       INSTANCE  hMod,      // 钩子所在的实例的句柄,
                       DWORD     dwThreadId // 钩子所监视的线程的线程号
                      )
    hMod: 对于线程序钩子,参数传NULL;对于系统钩子:参数为钩子DLL的句柄
  dwThreadId:对于全局钩子,该参数为NULL。
  
    返回:成功:返回SetWindowsHookEx返回所安装的钩子句柄;
          失败:NULL;


四、卸载钩子:
    UnhookWindowsHookEx
  函数原形:BOOL UnhookWindowsHookEx(
                   HHOOK  hhk       // 要卸载的钩子句柄。
                   )


五、钩子函数:
    MyHookProc
  钩

深入理解API钩子技术:使用EasyHook拦截TerminateProcess函数 API钩子技术,又称为钩子(Hook),是一种程序化技术,它能够在调用API(应用程序编程接口)函数之前或之后介入,对API的调用进行拦截、监视或修改。这种技术常用于插件架构、安全监控、自动化测试、日志记录等多种场景。EasyHook 是一款开源的Windows钩子库,由Anders Hejlsberg (Delphi、C#语言的缔造者) 和他人合作开发。它的核心目的是为开发者提供一个简单而强大的平台,用于在本地和远程进程之间进行方法钩子(Hook)操作,实现对系统级或者应用程序级行为的控制和修改。 阅读详情

相关推荐

x86与x64平台兼容的函数钩子库实战

在现代软件开发和逆向工程中,函数钩子技术扮演着至关重要的角色。它允许开发者在不修改原有代码的前提下,插入自定义代码块,从而改变程序的正常执行流程。函数钩子技术广泛应用于调试、性能监控、安全防护等领域。根据不同的操作系统和编程语言环境,实现函数钩子的方法也多种多样,比如Windows平台上的API拦截、Linux系统中的ptrace等。本文将深入探讨函数钩子技术的基本原理和实现方式,着重介绍Mhook库的特性、优势及使用方法,并提供针对性的应用场景分析,以及在使用时需注意的事项。

weixin_29496633的博客 1105

vb.net使用hook技术之键盘鼠标钩子

Hook 概述: 关于Hook技术的讲解,我还没那能力讲的全面,但是大致了解的就是,它是一种监控的技术,通过挂载钩子,我们能够监控系统中的各种消息来往,以及拦截处理。甚至可以将应用程序注入进程。具体请百度,这里主要讲解如何用vb.net做全局键盘鼠标钩子。 Hook的大致过程 我看了微软和各位大佬博客关于SetWindowsHookEx的讲解,大致的过程就是,将应用程序的定义的钩子安装 钩子链中,...

weixin_42150685的博客 2361

CommHookDemo2:深入通信钩子技术的实现与应用

本文还有配套的精品资源,点击获取 简介:通信钩子(CommHook)是Windows系统中用于监控或改变其他应用程序通信行为的强大技术。通过使用SetWindowsHookEx函数挂接系统调用,开发者可以拦截和处理通信消息,如网络、串口通信或进程间通信。CommHookDemo2是一个示例项目,演示了如何实现通信钩子,涉及拦截API函数以实时监控数据传输。该技术分为系统级和...

weixin_36282234的博客 1088

Windows HOOK钩子技术

Windows HooK钩子技术是指基于Windows中窗口的程序的消息处理里机制,对系统或者进程中的消息进行截获和处理,并将截获和处理的消息在重新处理和发送,使其可以实现不同的功能。 钩子技术分为系统钩子技术和线程钩子技术 系统钩子:是用于监视真个系统中的消息的钩子技术,因为系统钩子会影响系统中所有的应用程序,所以钩子函数必须放在独立的动态链接库(DLL) 中。做好之后使用其他程序将钩子挂载到系统的进程中。 线程钩子:指的是对指定线程进行监视。 钩子原理 在使用钩子技术的时候,WINDOWS会先在内存中创

qq_43812868的博客 2868

Discuz IIS上传附件大于28M失败报错Upload Failed.修改maxAllowedContentLength(图文教程)

下图:Discuz X3.5的系统信息,上传许可为1024MB(1GB)论坛为局域网论坛,仅供内部同事交流使用!使用官方最新的Discuz! X3.5 Release 20231221 UTF-8 下图:选择上传附件(提示可以最大上传100M) 下图:模拟上传84M的文件(

骚团长的博客 1828

AHB协议中hreadyout和hready_in的区别

上面这张时序图表明master有两笔写传输,第一笔传输为slave1(s1),传输类型为SEQ,在第一笔传输的第二个周期,也就是第一笔传输的dataphase,此时slave1没有准备好被写数据,因此把s1_hreadyout拉低,但此时slave2已经看到自己的NONSEQ传输了,而且slave2已经是准备好了的。重新拿上面的仿真图看一下,由于前一个周期的s1_hreadyout为低电平,所以s2的hready_in也为低电平,那么该周期s2不会对addr以及控制信号进行采样。就不会出现上面的问题。...

weixin_44101336的博客 2865

如何使用Win32Api创建鼠标钩子

使用钩子之前,必须创建钩子,使用函数SetWindowsHookEx,函数原型如下: HHOOK WINAPI SetWindowsHookEx(__in int idHook,  \\钩子类型                                                                     __in HOOKPROC lpfn,  \\回调函数地址

vivianshen0406的专栏 1588

立创开源4G+GPS定位系统:基于微信小程序的低成本低功耗追踪方案

本文介绍了一个基于立创开源平台的超小型4G+GPS定位系统方案。该方案采用28mm*28mm主板,集成4G Cat.1通信与GPS定位,通过微信小程序“点灯专家”实现远程追踪管理,具备低成本、低功耗、易于部署的特点,适用于电动车、宠物、资产追踪等多种场景。

weixin_28895791的博客 394

教你对Windows干点坏事,各种钩子的使用

又到了每月XXXX时间……真是没的写啊没的写,拿出点压箱底的东东吧,大概介绍一下Windows中的钩子(Hooks) 我知道的大概这么几种……困 1. 消息钩子,可以截获每个程序的Windows消息进行处理。这个东西最常见,就是调用传说中的API, CreateHoo

Vonger的专栏 1495

测试人必看!正交表与Allpairs工具对比:如何选择最适合你的组合测试方案?

本文深入对比了正交表、PICT与Allpairs三种主流组合测试方案,帮助测试人员根据项目场景做出最佳选择。文章分析了各自的核心原理、优劣势及适用场景,特别强调了在涉及复杂约束时PICT工具的强大功能,并提供了从原理学习到CI/CD集成的实战选型指南。

weixin_29224309的博客 267

从零开始掌握Simscape Multibody:机械系统建模与仿真入门

本文为机械系统建模与仿真入门指南,详细介绍了如何从零开始使用Simscape Multibody。通过构建曲柄摇块机构的实战案例,系统讲解了刚体、关节、约束等核心模块的使用,以及模型验证、参数化设计和多领域系统集成等进阶技巧,帮助工程师和学生高效进行虚拟设计与测试。

weixin_29229261的博客 310

钩子

关键字 HOOK 钩子 应用 技术原作者姓名 张增强 介绍钩子(Hook)技术,以其强大的功能,被广泛的应用于系统监视,消息管理。他可以在消息到达目标窗口以前截获消息,并任意的处理系统消息,达到一般应用程序无法达到的功能。本文主要从钩子的种类,作用,应用入手,概要的介绍了钩子技术的应用和作用。并附加一个SHELL钩子的例子和过程。 读者评分 3 评分次数 1 正文当你创建一个钩子时,W

Corey的专栏 3147

DSSAT模型建模教程

随着数字农业和智慧农业的发展,基于过程的作物生长模型(Process-based Crop Growth Simulation Model)在模拟作物对气候变化的响应与适应、农田管理优化、作物品种和株型筛选、农业碳中和、农田固碳减排等领域扮演着越来越重要的作用。现有版本V4.7能模拟27种主要农作物的生长发育和产量形成过程,被广泛应用于精细农业、水肥管理、气候变化、粮食安全、土壤碳周转、环境影响、农业可持续性、农业生态等诸多与农业生产和科研有关的领域。如果你是个模型入门者,这次将让你体验一键模拟的乐趣。

weixin_55561616的博客 1413

MFC线程钩子和全局钩子[HOOK DLL]

第一部分:API函数简介 1.       SetWindowsHookEx函数 函数原型 HHOOK SetWindowsHookEx(   int idHook,        // hook type   HOOKPROC lpfn,     // hook procedure   HINSTANCE hMod,    // handle to application ins

郑海波(莫川)的优快云博客 7862

嵌入式面试题精选100道及参考答案(4万字长文)

指针是C语言中一种特殊的变量,它存储的是另一个变量的内存地址。指针的使用提供了一种间接访问和操作内存的方法。地址操作:通过使用运算符,可以获取变量的地址,并将这个地址赋值给指针变量。间接引用:使用运算符可以访问指针指向的变量的值。动态内存分配:指针用于动态地分配和释放内存。数组操作:指针可以用于遍历和操作数组。函数参数:指针作为函数参数可以改变原始数据。字符串操作:在C语言中,字符串通常以字符数组的形式存在,并通过字符指针进行操作。// 指向数组的第一个元素i < 5;++i) {在这个例子中,

大模型大数据攻城狮的专栏 1971

MIKE水动力笔记2_水动力基础理论知识

本文所讲内容是水动力基础理论知识,所参考的主要书籍是《水动力学和水质》(第二版,季振刚著,海洋出版社)。

晏长街的博客 1万+
上一篇: rundll usage
下一篇: VC调试入门
manplus
博客等级 码龄22年 6粉丝 160原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值