`
sbabzc
  • 浏览: 38627 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

关于HOOK的一些安装卸载说明以及消息类型说明

阅读更多
HOOK的概念

1:HOOK总的来说是windows处理消息的一个机制,通过它可以进行消息的截获,可以用在比较底层的一些开发

HOOK必须使用下面的语句:

LRESULT CALLBACK HookProc
(
int nCode,
   WPARAM wParam,
   LPARAM lParam
);

HOOKProc是定义函数的名称
nCOde是HOOK的参数
WPARAM,LPARAM主要包含了发送以及接受消息的信息。

2:HOOK的安装以及释放
安装钩子主要用到了下面的API
HHOOK SetWindowsHookEx(
     int idHook,   // 钩子的类型,即它处理的消息类型
     HOOKPROC lpfn,  // 钩子子程的地址指针。如果dwThreadId参数为0
   // 或是一个由别的进程创建的线程的标识,
   // lpfn必须指向DLL中的钩子子程。
   // 除此以外,lpfn可以指向当前进程的一段钩子子程代码。
   // 钩子函数的入口地址,当钩子钩到任何消息后便调用这个函数。
     HINSTANCE hMod, // 应用程序实例的句柄。标识包含lpfn所指的子程的DLL。
   // 如果dwThreadId 标识当前进程创建的一个线程,
   // 而且子程代码位于当前进程,hMod必须为NULL。
   // 可以很简单的设定其为本应用程序的实例句柄。
     DWORD dwThreadId // 与安装的钩子子程相关联的线程的标识符。
   // 如果为0,钩子子程与所有的线程关联,即为全局钩子。
           );
调用成功会返回一个句柄,失败返回NULL

调用成功后,需要继续截取消息,需要调用CallNextHook来传递消息。

LRESULT CallNextHookEx
  (
  HHOOK hhk;
  int nCode;
  WPARAM wParam;
  LPARAM lParam;
  );

HHK是调用SetWindowsHookEx得到的句柄。

如果需要释放钩子,那么需要调用
UnHookWindowsHookEx
(
HHOOK hhk;
);
hhk也就是SetWindowsHookEx得到的句柄。

3:下面介绍了一些钩子的类型

3.1:WH_CALLWNDPROC和WH_CALLWNDPROCRET Hooks使你可以监视发送到窗口过程的消息。
系统在消息发送到接收窗口过程之前调用WH_CALLWNDPROC Hook子程,
并且在窗口过程处理完消息之后调用WH_CALLWNDPROCRET Hook子程。

3.2:WH_CBT Hook 主要是窗口的一些消息
3.3:WH_DEBUG Hook 在系统调用系统中与其他Hook关联的Hook子程之前,系统会调用WH_DEBUG Hook子程。
3.4:WH_GETMESSAGE Hook 用来监视从GetMessage or PeekMessage函数返回的消息
3.5:WH_KEYBOARD Hook 用来监视键盘的消息
3.6:WH_MOUSE_LL Hook 用来监视线程队列中的鼠标消息

其他一些具体的,大家可以到google或者百度检索
本文地址:http://www.xszlo.com/article/2012-12-03/7571.html,转发请保留这个地址,谢谢
分享到:
评论

相关推荐

    hook入门,带键盘hook源代码与学习资料

    根据拦截的事件类型,Hook可以分为多种类型,如键盘Hook、鼠标Hook、消息Hook等。 二、键盘Hook 键盘Hook主要用于捕获和处理键盘输入事件。在Windows中,键盘Hook通常通过SetWindowsHookEx函数来设置,这个函数允许...

    全局鼠标HOOK实现右键无效NoRButton

    这个函数需要指定HOOK类型(WH_MOUSE_LL)、HOOK回调函数的地址、线程ID(0表示所有线程)以及DLL句柄,用于卸载HOOK。 2. **HOOK回调函数**: 当鼠标事件发生时,系统会调用我们提供的回调函数(通常为`LRESULT ...

    C#中全局鼠标、键盘Hook的应用方法.doc

    它们分别用于设置Hook、卸载Hook以及将Hook信息传递给钩子链的下一个处理程序。 4. **DllImport特性**: 在C#中,`[DllImport]`特性用于声明外部函数库(DLL),并指定函数的名称、调用约定和字符集。例如,我们为...

    HookAPI

    1. **钩子类型**:HookAPI支持多种钩子类型,如WH_CALLWNDPROC(窗口消息处理)、WH_GETMESSAGE(消息队列)、WH_KEYBOARD_LL(低级键盘输入)等。每种类型的钩子都有其特定的应用场景和拦截范围。 2. **钩子安装**...

    HOOKAPI大全(私人珍藏)

    3. **安装与卸载钩子**:使用SetWindowsHookEx函数安装钩子,指定钩子类型、钩子处理函数、线程ID以及模块句柄。当不再需要钩子时,应使用UnhookWindowsHookEx函数来卸载它。 4. **示例代码**:“HookAPI demo”...

    ApiHook.rar_APIHOOK

    "HTools.exe"可能是用于操作HookDll.dll的工具,比如安装、卸载Hook,或者查看Hook的效果。"FileDrv.sys"则可能是一个驱动程序,用于更底层的系统调用Hook,例如在内核模式下对文件系统操作的拦截。...

    mouse-hook.rar_HOOK MOUSE

    标题中的"mouse-hook.rar_HOOK MOUSE"表明这是一个关于鼠标钩子技术的示例代码或教程,主要涉及Windows API中的钩子机制。在这个例子中,重点是创建一个DLL动态链接库来实现鼠标钩子,并通过调用DLL中的方法来监控和...

    vc钩子hook 截获exe调用的任何函数.visual c++

    这个函数需要传入钩子类型、钩子处理函数的地址、所属线程ID以及可选的模块句柄(如果钩子处理函数位于非系统模块中)。 4. **卸载钩子**:当不再需要钩子时,记得使用`UnhookWindowsHookEx`函数移除它,以避免影响...

    HOOK API Source

    "MsgHook"项目则可能包含了实现Hook MessageBox的具体步骤和技术,包括创建Hook、安装Hook、卸载Hook以及处理Hook事件的相关代码。开发者可能会讲解如何捕获WM_MESSAGE或WM_USER消息,以及如何区分不同类型的...

    windows键盘hook VS2012解决方案

    1. **钩子管理**:确保正确地安装和卸载钩子,防止内存泄漏或系统资源占用过多。 2. **权限和安全**:键盘Hook可能涉及到用户隐私,因此在编写这类程序时需谨慎,并遵守相关法律法规。 3. **性能影响**:低级钩子...

    HookMouse,hook的例子

    这个文件可能包含了关于如何使用这个示例项目的详细说明,包括如何编译、运行以及理解代码的步骤。对于初学者来说,阅读这份文档将有助于更好地理解钩子的工作原理。 6. **Mousehook**和**Mouse**: 这两个文件名...

    鼠标系统钩子.zip_内核hook鼠标

    【标题】"鼠标系统钩子.zip_内核hook鼠标"涉及的是Windows操作系统中关于鼠标事件监控的技术,主要是通过API钩子来实现。API钩子是一种系统级别的编程技术,允许开发者在系统调用之间插入自定义代码,以监听或改变...

    delphi hook library

    3. **Hook Types**: Delphi Hook Library可能包含多种类型的Hook,如API Hook(用于拦截系统API调用)、VMT Hook(用于拦截对象方法调用)以及类Hook(用于拦截类的构造、析构等生命周期事件)。 4. **线程安全**: ...

    hook 鼠标 vc++

    在提供的文件列表中,`Mouse.exe`可能是已经编译好的应用示例,`说明.txt`可能包含了关于如何运行或使用该程序的说明,而`Mouse`和`Mousehook`可能是源代码文件夹,包含了实现鼠标钩子的相关代码。 总的来说,理解...

    apihook.rar_APIHOOK_visual c

    在"www.pudn.com.txt"这个文件中,可能包含了关于APIHOOK范例的下载来源信息,或者是一些使用说明。而"apihook"文件可能是实际的源代码或编译后的二进制文件,包含实现了API钩子的示例程序。为了进一步理解这个范例...

    deny_rename_exe.rar_api hook_asmhook.cpp_hook_hook 文件

    标题中的"deny_rename_exe.rar_api hook_asmhook.cpp_hook_hook 文件"揭示了这是一个关于API钩子技术的示例,主要用于阻止用户更改扩展名为EXE的文件名。API钩子是一种技术,允许开发者监控或修改其他程序调用特定...

    vc++编写的 变速齿轮 来调节程序运行速度 (附源代码) 使用了API HOOK钩子技术

    通过阅读这些源代码,我们可以深入理解API Hook的具体实现细节,如钩子函数的定义、钩子的安装和卸载逻辑以及如何修改系统时间API的行为以改变程序运行速度。 总结来说,这个项目是一个使用VC++和API Hook技术的...

    易语言APIHOOK应用实例源码.rar

    易语言APIHOOK应用实例源码是一个关于在易语言编程环境下实现API钩子技术的实践项目。API钩子是Windows操作系统中的一种技术,它允许开发者监控或修改其他应用程序对特定API函数的调用。通过APIHOOK,我们可以拦截...

    C#2005挂机锁 hook

    9. **文档说明**:`说明.txt`文件可能包含了程序的使用说明,如何安装、配置和使用挂机锁,以及可能遇到的问题和解决方案。 通过以上分析,我们可以看出,创建一个C#2005挂机锁程序需要深入理解Windows API、多线程...

    利用VB实现HOOK键盘源代码.zip_VB hook_hook_vb key ho_键盘

    以上就是关于VB实现键盘钩子的一些基本知识,通过阅读和理解提供的源代码,你可以深入学习如何在VB中实现这一功能。如果你对编程工具和VB有更多的兴趣,可以寻找相关的社区和教程,以提升你的编程技能。

Global site tag (gtag.js) - Google Analytics