为什么游戏要安装全局钩子( 二 )


“加载全局钩子”说白了就是全局的监控
一个程序如果加载了全局钩子
那基本就可以说这个程序可以监控到你在计算机上的一举一动
一般认为除了杀毒软件一类的程序加载全局钩子是正常现象之外,其余程序有类似动作都可以认为可疑 。如果你不知道这个程序是干什么的,那就更可疑了
(杀毒软件需要监控其他所有程序以分析是否是病毒,所以类似于加载全局钩子的行为可以认为是正常的,不过其实杀毒软件也不一定加载全局钩子,因为监控的方法很多,而加载全局钩子的监控手段又并不是非常有效 。
全局钩子为什么要写dll?

为什么游戏要安装全局钩子

文章插图
要实现Win32的系统钩子,必须调用SDK中的API函数SetWindowsHookEx来安装这个钩子函数,这个函数的原型是HHOOK SetWindowsHookEx(int idHook,HOOKPROC lpfn,HINSTANCE hMod,DWORD dwThreadId);,其中,第一个参数是钩子的类型;第二个参数是钩子函数的地址;第三个参数是包含钩子函数的模块句柄;第四个参数指定监视的线程 。如果指定确定的线程,即为线程专用钩子;如果指定为空,即为全局钩子 。
得到控制权的钩子函数在完成对消息的处理后,如果想要该消息继续传递,那么它必须调用另外一个SDK中的API函数CallNextHookEx来传递它 。钩子函数也可以通过直接返回TRUE来丢弃该消息,并阻止该消息的传递 。通过使用 DLL,程序可以实现模块化,由相对独立的组件组成 。加载快,运行效率高,具有通用性,这是DLL的重要特点 。
如何用全局钩子捕获任何窗口的创建信息
为什么游戏要安装全局钩子

文章插图
你需要截获 按钮 HWND 的 WM_LBUTTo