Windows操作系统全局消息钩子Bug

场景:

Process A与Process B是同一个程序的两个实例,

1、 两个进程都设置了WH_CBT消息钩子,钩子的消息处理都在TSVulFw.dat模块的同一个函数。

2、 两个进程具有相同的名称,但是PID不同。

当进程通过以下流程执行时,就会出现一个BUG

BUG分析:

Process A首先设置了全局的WH_CBT钩子,SetWindowsHookEx最终会调用到win32k.sys的zzzSetWindowsHookEx函数,GetHmodTableIndex(UNICODE_STRING)可以定义到模块名称。创建一个新的HOOK结构地址0xbbe566e8

模块地址:

C:/Documents and Settings/All Users/Application Data/Tencent/TSVulFw/TSVulFw.dat

模块Index:

GetHmodTableIndex()的到 ihmod = 3

Process B也设置了全局的WH_CBT钩子,SetWindowsHookEx最终会调用到win32k.sys的zzzSetWindowsHookEx函数,GetHmodTableIndex(UNICODE_STRING)可以定义到模块名称。创建一个新的HOOK结构地址0xbbe5ef58

Process A 执行UnhookWindowsHookEx操作,最终调用win32k.sys的zzzUnhookWindowsHookEx函数,该函数Unhook的Hook结构竟然是Process B的,结构的地址0xbbe5ef58,从图中“dd edi”命令可以看到Hook结构的内容,地址是0xbbe5ef58,下一个结构的地址是Process A设置的Hook结构0xbbe566e8。

Process A没有Unhook自己的Hook结构,反而Unhook了Process B设置的Hook结构,BUG啊~~~~~

最后Process A退出的时候,调用xxxDestroyThreadInfo -> FreeThreadsWindowHooks -> UnlinkHook(PHOOK) ,将Process A自己设置的WH_CBT全局消息钩子给Unhook了。

Process B UnHook时,HHook句柄已经为NULL了

windows全局消息钩子的一个BUG相关推荐

  1. C++ Windows Hook 消息钩子 详解

    本文完整测试工程的源码免积分下载地址:http://download.csdn.net/detail/zy_dreamer/5336484 我们先来简单的了解一下基本概念: Hook是WINDOWS提 ...

  2. 安装全局消息钩子实现dll窗体程序注入

    说明{      通过设置全局消息钩子来实现dll注入,然后窗体有相关消息请求的时候就会自动加载注入dll, 然后在入口处做处理就可以了.注入方式简单很多,比代码注入和lsp等注入都简单,就不解释了. ...

  3. Windows 反消息钩子(1)

    消息钩子在Windows编程中有着非常广泛的应用,它可以任意拦截Windows系统,这个以消息为驱动的系统中的绝大多数消息类型.一方面这给编程者带来了巨大的灵活性,另一方面也埋下了巨大隐患,大多数窃密 ...

  4. 代码实现全局消息钩子SetWindowsHookExA监视按键记录

    简单的使用Windows提供的Hook API SetWindowsHookExA,实现弹窗提示每次按下的按键 步骤: 1.编写一个Dll调用SetWindowsHookExA,实现弹窗 2.编写一个 ...

  5. C++编写Windows全局键盘钩子记录键盘输入

    1.键盘钩子处理程序 HookProc 2.键盘钩子安装程序 InstallHook 3.键盘钩子卸载程序 UnInstallHook 4.键盘钩子dll的加载,安装与释放 生成标准windows d ...

  6. 计算机病毒对消息钩子的利用与对抗

    作 者: dncwbc 时 间: 2011-10-07,23:57:15 链 接: http://bbs.pediy.com/showthread.php?t=141059 一.消息钩子的概念     ...

  7. VC++获取病毒的消息钩子

    一.消息钩子的概念 1.基本概念 Windows应用程序是基于消息驱动的,任何线程只要注册窗口类都会有一个消息队列用于接收用户输入的消息和系统消息.为了拦截消息,Windows提出了钩子的概念.钩子( ...

  8. Windows 全局钩子 Hook 详解

    监控程序的实现       我们发现一些木马或其他病毒程序常常会将我们的键盘或鼠标的操作消息记录下来然后再将它发到他们指定的地方以实现监听.这种功能其他是利用了全局钩子将鼠标或键盘消息进行了截取,从而 ...

  9. 利用钩子机制取得Windows的消息监控权

    利用钩子机制取得Windows的消息监控权 我们知道,Windows系统是建立在消息传递机制基础上的,几乎所有的程序活动都由消息来驱动.Windows的钩子机制可以看作是一个消息中转站,控制系统发出消 ...

最新文章

  1. java 并发_Java并发原理无废话指南
  2. 搭建windows下filezilla FTP服务器
  3. MySQL跑在CentOS 6 和 7上的性能比较
  4. [转] ASP.NET1.1(C#)中验证码产生的原理及应用
  5. Spring Boot——配置Spring Security配置类DEMO
  6. 如何绘制逻辑图 — 9.模型的分类
  7. 代码敲慢一点,学得会快一点
  8. P1955 [NOI2015]程序自动分析 离散化学习 lower_bound学习
  9. java如何把方法封装成接口,RxJava配合Retrofit实现网络封装
  10. 【实践】美团到店综合业务场景下的知识图谱构建与应用实践.pdf(附下载链接)...
  11. 网易云音乐最新免费下载音乐的方法----update2019/09/17
  12. 使用python编写聊天小程序
  13. 常微分方程简要复习_笔记_第2章:一阶微分方程的初等解法
  14. Odoo CRM获福布斯评为《2022最佳开源CRM》
  15. 2021年,交通·未来系列线上公益学术活动重新起航~
  16. cmd中通过winsat命令测试硬盘、CPU、内存、3d性能等
  17. Hey 朋友们好久不见。
  18. 计算机二级vb选择题分值,计算机二级VB考试的考试分值和考试题型剖析及解题技巧...
  19. java 参考中文站
  20. minecraft服务器搭建教程_我的世界服务器创建教程

热门文章

  1. Shell编程——$[ ] 、${ }、$( )、[ ]、[[ ]]、(())的区别
  2. vue的组件的生命周期
  3. 先验分布、后验分布、似然估计、贝叶斯估计、最大似然估计
  4. mysql 常用sql调优_MySQL 常用SQL优化
  5. 背景图自适应屏幕大小
  6. 手把手教你使用微软官方文件免费恢复神器Windows File Recovery恢复文件
  7. java画图板之平面山水画(一)
  8. 水墨风的山水大坝3d可视化场景
  9. Web3.0 · 基础层技术 · SCQA模型趣谈密码学
  10. 新产品Digi XBee RR无线模块迁移指南