Windows Hook的简单介绍——此树是我栽,此路是我开

windows - Hook技术介绍 hook 介绍 Hook技术被广泛应用于安全的多个领域,比如杀毒软件的主动防御功能,涉及到对一些敏感API的监控,就需要对这些API进行Hook;窃取密码的木马病毒,为了接收键盘的输入,需要Hook键盘消息;甚至是Windows系统及一些应用程序,在打补丁时也需要用到Hook技术。接下来,我们就来学习Hook技术的原理。 分类 1、 SetWindowsHookEx Windows下的应用程序大部分都是基于消息机制的,它们都会有一个消息过程函数,根据不同的消息完成不同的功能。Windows操作系统提供的钩 阅读详情

千里之行,始于足下!

今天是正式启程的第一天,一直明白自己的缺点就是不够坚持,同时没有坚定目标,或许是目标不够诱人吧。但是如果我可以成为这个领域中相当牛逼的人,那还是十分有吸引力的。

之前学习的过程中,学会了一项技术,时常感觉“无用武之地”,这应该是我自己学习的一个误区,之后自己会多在实战中检验技术,也希望有大佬多多指点。

本文内容

本文将简单介绍Windows Hook的基本内容,以及一些自己的看法,希望可以帮助您快速了解这一内容。

HOOK是什么?

Hook,中文里常常被译作“钩子”或者“挂钩”,其实是Windows操作系统里的一种中断消息机制。

是一种可以改变程序执行流程的技术,也就是讲程序原有的执行流程拦截,更改程序流向,并可以执行自己新代码的技术。

举个不恰当的例子:

通俗来说,就是一条高速公路,我们去追击一个罪犯(要截获的消息或事件),然后在他要经过的地方提前埋下埋伏,等到罪犯到来时,实现截获,并执行自己的操作。

或者说我们就是坏蛋,在要道打劫好人,“此树是我栽,此路是我开,要想过此路,留下买路财”

Hook可以干什么?

Hook技术被广泛应用于安全的多个领域,比如杀毒软件的主动防御功能,涉及到对一些敏感API的监控,就需要对这些API进行Hook;窃取密码的木马病毒,为了接收键盘的输入,需要Hook键盘消息;甚至是Windows系统及一些应用程序,在打补丁时也需要用到Hook技术。

Hook的基本原理

Hook技术的原理的:就是修改程序的运行时PC“指针”,让程序跳到我们指定的代码中运行,运行完我们的程序,程序PC指针又回到原来程序的下一条指令。简而言之:就篡改程序的运行路径,来执行我们的程序。

示例:

在notepad.exe和kernel32.dll之间挂上一个“钩子”,把它们要使用的CreateFile()函数替换掉,换成MyCreateFile()函数,实现我们想要的自定义功能。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mn3knWh9-1631061890261)(C:\Users\11073\AppData\Roaming\Typora\typora-user-images\image-20210907213648476.png)]

Hook的基本类型

Hook大体分为应用层和内核层Hook;(这里暂时不完整,后续将补充)

应用层Hook:

  • 消息Hook
  • 注入Hook
    • inline Hook
    • IAT Hook
    • HoxFix Hook
  • 调试Hook

内核层Hook:

  • SSDT Hook

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U2Ehsfbf-1631061890265)(C:\Users\11073\AppData\Roaming\Typora\typora-user-images\image-20210907213902611.png)]

常见Hook技术介绍

  • Inline Hook

API函数都保存在操作系统提供的DLL文件中,当在程序中调用某个API函数并运行程序后,程序会隐式地将API函数所在的DLL文件加载入内存中,这样,程序就会像调用自己的函数一样调用API。Inline Hook这种方法是在程序流程中直接进行嵌入jmp指令来改变流程的。

Inline Hook流程

  1. 构造跳转指令。
  2. 在内存中找到欲Hook函数地址,并保存欲Hook位置处的前5字节。
  3. 将构造的跳转指令写入需Hook的位置处。
  4. 当被Hook位置被执行时会转到自己的流程执行。
  5. 如果要执行原来的流程,那么取消Hook,也就是还原被修改的字节。
  6. 执行原来的流程。
  7. 继续Hook住原来的位置

这就是Inline Hook的大概流程。

  • 导入地址表钩子-IAT HOOK

    导入地址表是PE文件结构中的一个表结构。在可执行文件中使用其他DLL可执行文件的代码或数据,成为导入或者输入。当PE文件需要运行时,将被系统加载至内存中,此时windows加载器会定位所有的导入的函数或者数据将定位到的内容填写至可执行文件的某个位置供其使用。这个地位是需要借助于可执行文件的导入表来完成的。导入表中存放了所使用的DLL的模块名称及导入的函数名称或函数序号。

    在加壳和脱壳的研究中,导入表是非常关键的部分。加壳要尽可能地隐藏或破坏原始的导入表。脱壳一定要找到或者还原或者重建原始的导入表,如果无法还原或修过脱壳后的导入表的话,那么可执行文件仍然是无法运行的。

  • windows钩子函数

    windows下的窗口应用程序是基于消息驱动的,但是在某种情况下需要捕获或者修改消息,从而完成一些特殊的功能。对于捕获消息而言,无法使用IAT或Inline Hook之类的方式去进行捕获,不过windows提供了专门用于处理消息的钩子函数。

    windows系统提供的钩子按照挂钩范围分为局部钩子和全局钩子。局部钩子是针对一个线程的,而全局钩子这是针对这个操作系统内基于消息机制的应用程序的。全局钩子需要使用DLL文件,DLL文件里面存放了钩子函数的代码。

    在操作系统中安装全局钩子以后,只要进程接收到可以发出钩子的消息后,全局钩子的DLL文件会被操作系统自动或强行加载到该进程中,由此可见,设置消息钩子也是一种可以进行DLL注入的方法。

    windows下的钩子函数,主要用3个,分别是SetWindowsHookEx() 、CallNextHookEx()和UnhookWindowsHookEx()

聊聊Hook现状

上面只是对Hook做了简要的介绍,包括它是什么,可以做什么以及分类。

但是它作为一个比较老的技术,现在教程和实践有较为缺乏的时候,很多教程和书籍中的技术都已经略有过时,已经不能在实际的攻防中发挥作用。

展望

实话实说,现在网上大部分资料都比较老,目前看来,难以在当前Windows 10环境中发挥作用,但是作为学习所用还是受益无穷的,我将从这些教程中取长补短,尽可能地去探索在当下环境使用的可能性。

并且了为了技术的发展,我将尽可能多地使用C++的一些新特性,并遵守一些代码规范,和完整的代码检验流程,整理出规范优美的代码。

参考资料

《逆向工程核心原理》

《Windows Hook原理与实现》

《Windows Hook技术》

在这里插入图片描述

Windows 如何通过 hook 来拦截截屏 这篇内容介绍了如何在Windows系统中进行屏幕捕获的权限管理,特别是拦截截屏操作。文章首先指出在传统Windows应用程序中,系统没有提供直接的权限管控,因此需要采取一些其他方式,如使用hook来进行权限管控。接着,文章演示了如何通过API Monitor来监听目标应用程序的行为,以确定其使用的截屏方式。然后,文章介绍了如何使用BitBlt接口进行hook操作,以实现拦截截屏。最后,文章提供了注入hook DLL到目标进程的方法,以实现权限管理。 阅读详情

相关推荐

C/C++语言拾遗(五)--Windows钩子

windows钩子是windows消息处理机制的一个监视点,通过安装钩子可以达到监视指定窗口某种类型的消息的功能。所谓的指定窗口并不局限于当前进程的窗口,也可以是其他进程的窗口。当监视的某一消息到达指定的窗口时,在指定的窗口处理消息之前,钩子函数将截获此消息,钩子函数既可以加工处理该消息,也可以不作任何处理继续传递该消息。使用钩子是实现dll注入的方...

清凉简装的博客 481

Windows中的Hook机制

windows中的Hook技术被广泛应用于安全的多个领域,比如杀毒软件的主动防御功能,涉及到对一些敏感API的监控,就需要对这些API进行Hook;窃取密码的木马病毒,为了接收键盘的输入,需要Hook键盘消息;甚至是Windows系统及一些应用程序,在打补丁时也需要用到Hook技术。接下来,我们就来学习Hook技术的原理。...

Albert_weiku的博客 5068

hook原理介绍与简单实例

一、HOOK介绍 1、什么是HOOK(钩子) HOOK技术即钩子函数,钩子函数是Windows消息处理机制的一部分,通过设置“钩子”,应用程序可以在系统级对所有消息、事件进行过滤,访问在正常情况下无法访问的消息。 钩子的本质是一段用以处理系统消息的程序,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。 ...

mijichui2153的博客 5425

Windows Hook案例分析与技术探索

Hook是Windows中提供的一种用以替换DOS下“中断“的系统机制,中文译为“挂钩”或“钩子”。在对 特定的系统事件进行Hook后,一旦发生已Hook事件,对该事件进行Hook的程序就会收到系统的通知, 这时程序就能在第一时间对该事件做出响应。 钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有 到达目的程序前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理 (改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。..

John_ToStr的博客 7131

Windows Hook经验总结之一:API Hook方法汇总

HOOK的目的是用我们自己的代码取代一些函数的代码以改变程序的行为。 静态HOOK:在进程运行前挂钩,采用用户级进程即可完成。比如:有些程序会在启动时需要原光盘,如果我们修改获取驱动类型的函数则可以从硬盘启动。 动态HOOK:挂钩系统进程(如服务)时要动态挂钩 本文介绍常见的hook方法和实现机制。

ITer之家 5749

Windows内核驱动Hook入门

开启 Event Tracing 后,当用户层程序进行系统调用时,首先会调用PerfInfoLogSysCallEntry函数来对此次系统调用进行记录。然后才调用系统调用函数。PerfInfoLogSysCallEntry内部又会调用驱动注册的WMI_LOGGER_CONTEXT结构中的GetCpuClock指向的函数。这样就可以通过修改GetCpuClock指针为自己的代理函数,而且此时系统调用函数被放置在栈上,因此在该函数中能从栈中获取系统调用函数的值并进行修改为自己的hook函数。

2403_87755661的博客 2155

Windows Hook原理与实现

Windows Hook原理与实现 教程参考自《逆向工程核心原理》 1.概述 Hook技术被广泛应用于安全的多个领域,比如杀毒软件的主动防御功能,涉及到对一些敏感API的监控,就需要对这些API进行Hook;窃取密码的木马病毒,为了接收键盘的输入,需要Hook键盘消息;甚至是Windows系统及一些应用程序,在打补丁时也需要用到Hook技术。接下来,我们就来学习Hook技术的原理...

安全杂货铺 4万+

深入Windows内核:从互斥体(Mutex)原理到Hook CreateMutexW,实现微信无痕多开

本文深入解析Windows内核中互斥体(Mutex)的工作原理,并详细介绍如何通过Hook CreateMutexW技术实现微信无痕多开。文章对比了传统多开方法的局限性,提供了基于x64架构的Hook实现代码和注入流程,帮助开发者理解并应用这一高级技术,同时探讨了对抗检测机制和稳定性优化的实用技巧。

weixin_30888413的博客 503

Windows程序多开一般处理

Windows程序多开一般处理 一般部分程序为了利益可能会防止你多开,所以我这里介绍一下自己摸索半年学会的一些知识点结合某款市面上现在的游戏进行讲解. 我们要实现多开前,一般需要知道如何防止多开. 如何防止多开 通过文件共享判断文件是否存在,如果存在即为多开.(弊端:可能程序crash导致文件句柄没有得到释放) 通过建立Server socket进行IPC通信; 通过建立NamedPipe进行I...

Tanck的专栏 1万+

Windows API Hook实战:通过Inline Hook绕过微信单实例限制

互斥体是Windows操作系统中用于实现进程间同步的核心内核对象,其核心原理是通过命名实现全局唯一性,确保关键资源在同一时刻只能被一个进程访问。API拦截技术,特别是Inline Hook,通过修改目标函数在内存中的指令,能够在不修改原始程序文件的前提下,精准控制其行为。这项技术在软件调试、安全研究和功能扩展等领域具有重要价值。在应用场景上,它可以用于分析程序行为、实现热修复或绕过特定限制。本文以微信客户端的单实例检测机制为例,深入探讨了如何通过Hook CreateMutexW函数,并结合Detours库

weixin_30740295的博客 351

Microsoft Speech SDK 使用过程中女声改为男声遇到的问题

问题将女生改为系统自带男声(Kangkang)根据上面的步骤我的播放声音是改变了,但是还是女生,是yaoyao的女生。是因为下面注册表路径中VoicePath这个配置的路径指向了yaoyao的文件。 如何使用Microsoft Speech SDK,请参考https://blog.youkuaiyun.com/daoming1112/article/details/77542562 使用系统自带男声语音,不需...

u012161365的博客 7538

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

Windows下Inline Hook技术可以用来拦截一个指定的函数,并使其跳转到指定的地址执行相应的程序,从而实现某种想要的效果,本文介绍了x86和x64平台下Inline Hook的原理和基本使用方法,着重于x64下可行的方案,以及适用于多线程的方法。

PeaZomboss的博客 2888

银河麒麟服务器操作系统V10-SP1部署gitlab服务

银河麒麟高级服务器操作系统 V10 SP1 部署GitHub

weixin_43173670的博客 2155

最简单的Windows Hook(钩子)介绍

 Hook是Windows操作系统的消息传递机制的重要组成部分。通过使用Hook,程序可以监视系统中其他进程的消息传递,并在该消息到达目的前对其进行处理。注意,由于Hook可能访问其他进程的地址空间,故必要时应通过DLL实现。并且,全局Hook会降低系统的性能,应该尽量避免使用。Windows为不同类型的消息提供了不同类型的Hook,并分别维护一个Hook链表。新创建的Hook将被放到链首

[Wisdom is Power] 3097

【机器人】机械臂控制入门技术栈分享

机械臂控制入门技术栈分享1.前言2.机器人控制入门技术栈2.1.空间描述和变化2.2.运动学分析2.3.动力学建模2.4.控制入门学习3.进阶部分3.1.机器人参数辨识3.2.非线性控制3.3.现代机器人描述方法:指数坐标4.总结 1.前言 今天看到优快云上有个分享个人技术栈的活动,虽然我不是一个正规的程序员,也不搞前端、后端这些,但我一直在优快云上通过写博客对我的学习进行总结,于是我突发奇想,不如我也写一下我的个人技术栈,针对机械臂控制入门的,因为我水平也不高,所以本文内容也许不够饱满,也不够准确,但

要恰饭得嘛 5859

2024年ERP管理系统职业技能大赛软件测试赛项-测试报告

【说明本次测试的最终测试结果总结、测试过程中遇到的重要问题以及如何解决、被测系统的质量结论、个人的收获以及团队的得失等】【说明编写本测试报告的目的和实际读者】【说明本次测试实际人员安排及主要职责】【说明本次测试使用的测试用例设计方法】【说明本次测试使用的测试方法】【针对本次测试进行Bug汇总】【针对本次测试进行用例汇总】【说明本项目的背景情况】【说明本次测试的实际。

Code is fun. 790

[Windows Hook]MinHook库的使用方式

MinHook就是通过Inline Hook实现的,通过生成库文件,在我们的项目中包含头文件以及对应库文件就可以实现Hook。 学习一个库,先学习怎么用,然后再阅读源码学习原理。

CodeBowl的博客 7477

GEE土地分类:土地分类精度评定和分类后影像进行(Kmeans,Gmeans,SNIC (Simple Non-Iterative Clustering)聚类分析和滤波(focal_mode)分析

使用聚类分析和滤波分析来进一步处理土地分类后的影像数据。聚类分析可以帮助您识别影像中的相似区域。您可以使用聚类算法,如K均值聚类或层次聚类,将像素分组到具有相似像素值的群集中。这可以帮助您更好地理解图像中的空间模式和结构,并可能揭示有用的信息。滤波分析可以帮助您平滑图像并去除噪声。常见的滤波器包括中值滤波器和高斯滤波器。这些滤波器可以帮助您消除图像中的随机变化,并使其更易于解释和分析。

此星光明博客 2516

windows hook技术入门

hook是WINDOWS提供的一种消息处理机制,它使得程序员可以使用子过程来监视系统消息,并在消息到达目标过程前得到处理。  下面将介绍WINNDOWS HOOKS并且说明如何在WINDOWS 程序中使用它。  关于HOOKS  使用HOOK 将会降低系统效率,因为它增加了系统处量消息的工作量。建议在必要时才使用HOOK,并在消息处理完成后立即移去该HOOK。 HO

小木匠盖大厦 1万+

【大模型】百度千帆大模型对接LangChain使用详解

百度千帆大模型对接LangChain使用详解

congge 5065

2025年9月GESP(C++四级):排兵布阵

作为将军,你自然需要合理地排兵布阵。地图可以视为n行m列的网格,适合排兵的网格以 1 标注,不适合排兵的网格以 0 标注。现在你需要在地图上选择一个矩形区域排兵,这个矩形区域内不能包含不适合排兵的网格。请问可选择的矩形区域最多能包含多少网格?

王老师青少年编程 1384

Windows HOOK 说明

Windows HOOK 说明hook是WINDOWS提供的一种消息处理机制,它使得程序员可以使用子过程来监视系统消息,并在消息到达目标过程前得到处理。下面将介绍WINNDOWS HOOKS并且说明如何在WINDOWS 程序中使用它。=========================关于HOOKS======================使用HOOK 将会降低系统效率,因为它增加了系统处

ZLMSDN的专栏 1458

把大表拆成更好用的“小仓库”:SAP HANA 表分区设计、分区裁剪与内存代价全解析

摘要:本文深入解析SAP HANA分区技术的核心价值与实现策略。作为内存数据库的"手术刀",分区通过将逻辑表横向切分为独立物理容器,显著提升并行计算能力与查询效率。重点探讨了三种分区类型(Range、Hash、Round-robin)的适用场景,以及分区裁剪的优化原理与前提条件。特别指出分区设计需要平衡查询模式与数据分布,并揭示了分区对内存占用的双向影响机制:既可能因字典复制增加消耗,也可能因数据纯度提升压缩率。通过电商订单表等实际案例,展示了合理分区如何将分钟级报表优化至秒级响应。文章

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1652

Windows核心编程_HOOK(续)_APIHOOK

啰嗦啰嗦: 开始之前还是要啰嗦几句,看到自己博客粉丝增加,访问量也越来越多,感到非常开心,而且好评也是不少,指错也非常感谢,从错误中发现了很多问题,非常感谢,也高兴自己的文章能帮助到其它人。 就比如之前的比较火动态视频桌面代码,网络上几乎找不到可行的动态视频桌面代码,最后博主花费了一晚上时间去研究,然后把研究成果从头到位到理论,到Windows桌面结构,以及体系分析,都说的非常透彻,也让不少...

17岁boy的博客 4648

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

windows HOOK机制

最近想写个监视系统的小软件,需要Windows Hook的知识,所以会陆续贴几个关于Hook的文章做参考。       本文将试图以下面的顺序讲解HOOK的大部分内容:        1、 WINDOWS的消息机制        2、 HOOK介绍        3、 HOOK链

stonesharp的专栏 1569

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

windows hook

使用VT-x创建hypervisor监控系统通过EPT(Extended Page Table)监控关键系统调用拦截NtCreateFile调用并检查文件名对目标文件返回访问拒绝状态在用户态显示权限提示c复制// 虚拟化相关常量// EPT相关// 目标文件名?// 函数声明。

az44yao的专栏 1452

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

上一篇: 迷茫的少年与迷茫的Windows前程,新时代没有载我的船
下一篇: 手把手教你用SetWindowsHookEx做一个键盘记录器
CodeBowl
博客等级 码龄5年 7664粉丝 67原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值