HOOK

本文深入探讨了Hook技术,特别是系统服务描述符表(SSDT)Hook。介绍了SSDT的作用,它是连接Ring3层Win32 API和Ring0层内核API的桥梁。文章详细阐述了应用层调用Win32 API的流程,并通过实例解析了SSDT的工作原理。内容涵盖SSDT Hook的实现,强调其在内核Hook技术中的重要地位,并预告了下篇将展示具体的SSDT Hook实现。
摘要由CSDN通过智能技术生成

文章目录:

                 

1. 引子 – Hook 技术:

2. SSDT 简介:

3. 应用层调用 Win32 API 的完整执行流程:

4. 详解 SSDT:

5. SSDT  Hook 原理:

6. 小结:

          

1. 引子 – Hook 技术:

     

前面一篇博文呢介绍了代码的注入技术(远程线程实现),博文地址如下:

http://www.cnblogs.com/BoyXiao/archive/2011/08/11/2134367.html

虽然代码注入是很老的技术了,但是这种技术也还是比较常见,

当然也比较好用的,比如在 Spy++ 中就使用了远程线程注入技术,

同时,如果有兴趣的阅读过 Spy++ 的源码的朋友,当然也可以在其源码中阅读到关于远程线程注入技术了。

            

(这篇博文虽然我会截断分为两篇博文撰写,但是博文仍然会比较长,内容其实是比较多的,覆盖面也比较广,

需要有一定耐心和基础方可阅读完,有兴趣者请自备茶水以及零食,然后慢慢阅读全文,

PS:这话引用自园子里某位园友)

            

然后的话就是漫漫长夜,心情不佳,于是写了篇博文,刚好又喝了点,所以估计会有些许疏漏之处,还请见谅 ~

           

在这一篇博文中呢,介绍的是一种 Hook 技术,对于 Hook 技术,可以分为两块,

第一块是在 Ring3 层的 Hook,俗称应用层 Hook 技术,

而另外一块自然是在 Ring0 层得 Hook,俗称为内核层 Hook 技术,

而在 Ring3 层的 Hook 基本上可以分为两种大的类型,

第一类即是 Windows 消息的 Hook,第二类则是 Windows API 的 Hook。

           

关于 Hook 的几种类型呢,下面给出几个简洁的图示:

image

            

image

          

image

         

关于 Windows 消息的 Hook,相信很多朋友都有接触过的,因为一个 SetWindowsHookEx 即可以完成消息 Hook,

在这里简要介绍一下消息 Hook,消息 Hook 是通过 SetWindowsHookEx 可以实现将自己的钩子插入到钩子链的最前端,

而对于发送给被 Hook 的窗口(也有可能是所有的窗口,即全局 Hook)的消息都会被我们的钩子处理函数所捕获到,

也就是我们可以优先于窗体先捕获到这些消息,Windows 消息 Hook 可以实现为进程内消息 Hook 和全局消息 Hook,

对于进程内消息 Hook,则可以简单的将 Hook 处理函数直接写在这个进程内,即是自己 Hook 自己,

而对于用途更为广泛的全局消息 Hook,则需要将 Hook 处理函数写在一个 DLL 中,

这样才可以让你的处理函数被所有的进程所加载(进程自动加载包含 Hook 消息处理函数的 DLL)。

对于 Windows 消息 Hook 呢,可以有个简单的邪恶应用,就是记录键盘按键消息,

从而达到监视用户输入的键值信息的目的,这样,对于一些简单的用户通过键盘输入的密码就可以被 Hook 获取到,

因为没当用户按下一个键时,Windows 都会产生一个按键消息(当然有按下,弹起等消息的区分),

然后我们可以 Hook 到这个按键消息,这样就可以在 Hook 的消息处理函数中获取到用户按下的是什么键了。

                  

当然关于消息 Hook 的话,其不是这篇博文的重点,

这篇博文主要介绍的是 SSDT Hook 技术,即内核 Hook 技术的一种,

这种技术呢,也是比较老的技术了,貌似是当年 Rootkit 起火的时候出来的,

但是 SSDT Hook 现在也还比较流行,比如在很多的杀毒软件或者安全软件里面也都会使用到 SSDT Hook 技术。

关于内核 Hook 也有几种类型,下面也给出一副图示:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值