C++如何禁用全局键盘钩子或者禁止某个程序挂钩(hook)?

C++如何禁用全局键盘钩子或者禁止某个程序挂钩(hook)?,第1张

对于普通程序,一个双缓冲钩子足够了(相当于一个假置顶钩子),代码如下:

HHOOK m_hHOOK1 = NULL, m_hHOOK2 = NULL 

 m_hHOOK1 = (HHOOK)SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)KeyboardProc, GetModuleHandle(L"HOOK"), 0)HOOK 变为 your module name

 m_hHOOK2 = (HHOOK)SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)KeyboardProc, GetModuleHandle(L"HOOK"), 0)//同上

 while (/**/true)

{

  UnhookWindowsHookEx(m_hHOOK1)

  m_hHOOK1 = (HHOOK)SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)KeyboardProc, GetModuleHandle(L"HOOK"), 0)//同上

  UnhookWindowsHookEx(m_hHOOK2)

  m_hHOOK2 = (HHOOK)SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)KeyboardProc, GetModuleHandle(L"HOOK"), 0)//同上

}

对于变态一点的程序诸如 TX 的 QQ 的登陆部分以上办法直接抓鸡,推荐使用 winio 或其高版本库进行驱动级拦截(未亲测)。

如果还是抓鸡,只能把那个程序推进去做手术了,这需要楼主一定的汇编语言功底(本人未实践过,亦不能保证成功)。

WIN将所有HOOK组成一个list

最后HOOK的在list头

系统是从list头还是调用回调,如果回调中有调用CallNextHook,下面的HOOK才能收到

如果你能保证你在最后钩上,就能防止其他HOOK程序

可以先获取计算机上的进程并生成列表,让后在后台每隔多少时间和列表进行对比,发现列表里、有定义好了的就终止 我的思路是这样:

.版本 2

.支持库 eAPI

.子程序 _时钟1_周期事件

.局部变量 进程, 进程信息, , "0"

.局部变量 计次, 整数型

.局部变量 限制进程, 文本型

进程 = 取系统进程列表 ()

限制进程 = “QQ.exe”

.计次循环首 (取数组成员数 (进程), 计次)

列表框1.加入项目 (到文本 (进程 [计次].进程名称), )

.判断开始 (限制进程 = 进程 [计次].进程名称)

信息框 (“发现非法进程!”, #警告图标, )

终止进程 (限制进程)

.默认

.判断结束

计次 = 计次 + 1

.计次循环尾 ()


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8052741.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-13
下一篇2023-04-13

发表评论

登录后才能评论

评论列表(0条)

    保存