1、HOOK SERVICE TABLE:HOOK SSDT
这种方法对于拦截 NATIVE API 来说用的比较多。
SSDT hook,一句话——Windows把需要调用的内核API地址全都存在了
一个表中(System Service Dispatch Table),要想hook一个内核API,比较简单的办法就是把
该内核API在表(SSDT)中保存的地址修改为自己撰写的函数地址。
2、HOOK INT 2E 方法:IDT HOOK
IDT是中断描述表,可以替换其中的中断处理程序。
这种方法对于跟踪、分析系统调用来说用的比较多。原理是通过替换 IDT
表中的 INT 2E 中断,使之指向我们自己的中断服务处理例程来实现的。掌握
此方法需要你对保护模式有一定的基础。
3、 HOOK PE 方法:EAT HOOK
这种方法对于拦截、分析其他内核驱动的函数调用来说用的比较多。原理
是根据替换 PE 格式导出表中的相应函数来实现的。
EAT是可执行文件的导出表,记录DLL中可供其他程序使用的函数,可执行文件装载时会使用相应DLL的EAT表来初始化IAT表,通过替换EAT表中的函数地址,就可以使依赖于本DLL的程序得到一个假的地址。

4.IAT HOOK (ring3 用)
IAT是可执行文件的导入表,记录可执行文件使用的其它DLL中的函数,通过替换IAT表中的函数地址,可以hook相应DLL中的函数调用。

5、Inline Hook方法 (ring 0和ring3 都可以用)
Inline hook的工作流程:
1)验证内核API的版本(特征码匹配)。
2)撰写自己的函数,要完成以上三项任务。
2)获取自己函数的地址,覆盖内核API内存,供跳转。
Inline Hook的缺点:
1) 不够通用。各个windows版本中,内核API的开始一段不尽相同,要想通吃,就要多写几个版
本或者做一个特征码搜索(因为有的内核API在各个版本中非常相似,只是在“特征码”之前或之后加一点东西)。
2) 已被一些检测工具列入检测范围,如果直接从内核API第一个字节开始覆盖,那么很容易被检测,如果把覆盖范围往后推,并加以变形,也许能抵挡一气。具体情况,我才疏学浅,尚未试验

6.SYSENTRY hook
为了性能的考虑,xp后的系统都改用sysentry命令来进入ring0,去调用SSDT中的服务,不再是通过IDT中的 int 2E。这也使得我们hook也变得相对容易了。
首先获得sysentry的地址,然后改之,不用再考虑IDT了

7)IRP hook
IRP是 I/O request packets,驱动程序中有一系列分发例程来处理请求,这些例程保存在驱动设备对象的数据结构中的一个表中,也很容易替换。

WINDOWS下的各类HOOK相关推荐

  1. Windows下查找各类游戏存档路径

    我算是个比较爱打单机游戏的人,同时也是个半吊子的编程爱好者,有的时候会去干一些修改存档的事儿.不过这篇博文不讲存档修改技术,只讲第一步:去哪找存档? 目标:在windows10系统下搜索到游戏的存档路 ...

  2. Windows下x86和x64平台的Inline Hook介绍

    原文链接:https://blog.csdn.net/PeaZomboss/article/details/129095200?spm=1001.2014.3001.5501 前言 我在之前研究文明6 ...

  3. Windows下Hook API技术

    Windows下Hook API技术 什么叫Hook API?所谓Hook就是钩子的意思,而API是指Windows开放给程序员的编程接口,使得在用户级别下可以对操作系统进行控制,也就是一般的应用程序 ...

  4. windows下捕获dump

    一般要捕获异常只需要两个函数:SetUnhandledExceptionFilter截获异常:MiniDumpWriteDump写dump文件.但是由于CRT函数可能会在内部调用SetUnhandle ...

  5. Windows下使用apache模块实现合并多个js、css提高网页加载速度

    这篇文章主要介绍了Windows下使用apache模块实现合并多个js.css提高网页加载速度,本文使用的模块是基于mod_concat自己修改的,需要的朋友可以参考下 现在的网站表现力越来越丰富,页 ...

  6. Windows 下的 7 种 DLL 劫持技术

    本文讲的是Windows 下的 7 种 DLL 劫持技术,在本文中,我将列出半打可以在Windows运行用户模式的进程中使用DLL注入技术.也许可能会有更多类似的技术,但我正在和你分享的是我所拥有的第 ...

  7. windows下钩子的使用

    我们知道Windows中的窗口程序是基于消息,由事件驱动的,在某些情况下可能需要捕获或者修改消息,从而完成一些特殊的功能(MFC框架就利用Windows钩子对消息进行引导).对于捕获消息而言,无法使用 ...

  8. Windows下资源泄漏检测

    前言 内存泄露和资源泄露是C\C++程序员不得不面对的一个问题,随着程序越来越大,稍不留神就可能在程序中留下了内存泄露的隐患,这个问题很多人可能觉得没什么,就泄露点内存而已,只要程序逻辑没问题,但是如 ...

  9. Windows下部署ubuntu16.04+anaconda2.7+tensorflow

    Windows下部署虚拟机VM+ubuntu16.04+anaconda2.7+tensorflow 安装VMware 在虚拟机中新建Linux开发环境 在ubuntu中下载anconda 下载ten ...

最新文章

  1. 微软BI 之SSAS 系列 - 多维数据集维度用法之二 事实维度(退化维度 Degenerate Dimension)...
  2. DelayExchange原理
  3. 前端学习(2472):发布文章功能介绍
  4. IO口复用时钟的配置
  5. @程序员,夏天来了,你该送心仪女生这个啦
  6. 主机硬件系统主板状态 vmware_电脑主机启动不了怎么办?
  7. Visual Studio 2010全球发布会 上海站(图)
  8. python命名空间,类成员,对象成员
  9. Unity3D Shader系列之护盾效果
  10. C/C++:构建你自己的插件框架(1)
  11. 高中英语老师教师资格证考试成功通过前辈备考经验谈
  12. python技巧积累
  13. dp协议学习----2、SST模式下的TU的计算
  14. 看什么看!你的学习与就业我包了!!!
  15. 换算rem的宽度和高度不生效 chrome字体最小为12px
  16. system32里的文件说明
  17. OSChina App代码分析二
  18. 终极孵化器:仿生婴儿的美丽新世界
  19. 浅识k8s中的准入控制器
  20. Python:11设计动物Animal类,该类包括颜色color属性与叫call方法。再设计鱼Fish类,包括.....

热门文章

  1. Electron 调用系统工具记事本、计算器等
  2. iOS开发 - 获取时间段
  3. wireshark从入门到精通(协议排错安全篇)3
  4. 方法重载-Overload
  5. Linux下SVN命令总结
  6. ASP.NET用户控件的创建和使用
  7. windows下安装pygtk报g_assertion_message无法定位libglib-2.0-0.dll错误解决
  8. ARP命令详解--网络命令详解二
  9. 三招让你从求职者中脱颖而出(转)
  10. 百度,一面,二面知识点