#推荐
原理机制-什么是HOOK?

2024-10-27 0 913

首先明确一点:hook是一个编程机制,与语言无关。个人的简单理解hook就是钩子,之所以说是钩子,是因为你可以往钩子上挂任何东西,程序执行到hook的时候,你预先挂上/勾上(hook)的是什么,就执行什么。

比如 Mesa defines hooks for the parts where drivers may need to do hardware specific stuff, for example in the implementation of glDrawArrays().

贴一段维基百科中对钩子的定义:

钩子编程(hooking),也称作“挂钩”,是计算机程序设计术语,指通过拦截软件模块间的函数调用、消息传递、事件传递来修改或扩展操作系统、应用程序或其他软件组件的行为的各种技术处理被拦截的函数调用、事件、消息的代码,被称为钩子(hook)。

Hook原意是指钩子,它表示的就是在某个函数的上下文做自定义的处理来实现我们想要的黑科技

生搬硬套的理解HOOK,其实容易一知半解。要想要比较好的理解HOOK,最好是结合相应的语言/技术栈。

 对 于Windows系统,它是建立在事件驱动机制上的,说白了就是整个系统都是通过消息传递实现的。hook(钩子)是一种特殊的消息处理机制,它可以监视 系统或者进程中的各种事件消息,截获发往目标窗口的消息并进行处理。所以说,我们可以在系统中自定义钩子,用来监视系统中特定事件的发生,完成特定功能, 如屏幕取词,监视日志,截获键盘、鼠标输入等等。

Hook大概原理

创建一个代理对象,然后把原始对象替换为我们的代理对象,这样就可以在这个代理对象为所欲为,修改参数或替换返回值。

正常调用:

原理机制-什么是HOOK?

HOOK调用:

原理机制-什么是HOOK?

打比方原理机制-什么是HOOK?

在编程的世界中,HOOK(钩子)是一个强大而有趣的概念。想象一下,你正在参加一个聚会,突然有人告诉你:“等一下,让我先给你挂个钩子。”这里的“钩子”并不是用来钓鱼的那种,而是一种比喻,指的是一种机制,可以让你在某个特定的时刻插入自己的代码或者行为。

那么,什么是HOOK呢?简单来说,HOOK就是一段代码或者函数,它可以“钩住”程序的执行流程,让我们能够在特定的点上执行自定义的操作。这就像是在一条流水线上安装了一个特殊的装置,当产品经过这个装置时,我们可以对其进行一些额外的处理。

为了更好地理解这个概念,我们可以用一个生活中的例子来打比方。假设你是一个电影院的工作人员,每当有观众进入电影院时,你需要检查他们的电影票。这个过程可以看作是程序的正常执行流程。现在,假设你想要在检查电影票的同时,给每一位观众发放一张优惠券。为了实现这个目标,你可以在检查电影票的环节中加入一个“钩子”,也就是一个额外的步骤。当观众的电影票被扫描后,这个“钩子”就会触发,自动打印并发放优惠券。

在编程中,HOOK的实现方式有很多种。例如,在Web开发中,我们经常使用事件监听器来实现HOOK。当用户点击一个按钮时,我们可以设置一个事件监听器,当按钮被点击时,这个监听器就会被触发,执行我们定义的代码。

另一个例子是在操作系统中。Windows操作系统有一个叫做“钩子链”的机制,允许开发者在系统级别的事件(如键盘敲击、鼠标移动等)发生时插入自己的处理逻辑。这样,开发者就可以创建出各种有趣的应用程序,比如屏幕录制软件、游戏辅助工具等。

总之,HOOK是一种非常强大的工具,它允许我们在不修改原有代码的情况下,向程序中添加新的功能或者改变其行为。通过使用HOOK,我们可以实现很多有趣和实用的功能,让我们的应用程序变得更加丰富和多样化。

作者理解

HOOK,类似于一套正常流程关系中的拦截代理器

例如

1.我在网页教学JavaScript解密的时候经常会对某个function 进行短点 然后再进行

假设原函数

function Add(){x,y

return x+y

}

现在我改成

function Add(){x,y

console.log(“这是形参X:”+x);

console.log(“这是形参Y:”+y)

return x+y;

}

这其中的变化就是 我在调用的时候 中间增加了劫持手段 使得函数在走原来路径的时候增加了一段输出内容

2.常见的微信HOOK框架,有在使用的小伙伴们都知道,常见的框架 可爱猫等……

能通过使用框架来对sdk进行开发 从而可以控制PC端应用程序进行发信息,加好友,收红包等相应对吧

这其中也是HOOK技术  微信安装运行目录下的 WeChatWin.dll 内部的很多方法  通过汇编 抓包解密 可拦截到 微信每个动作后内存基址等变化,就能找到对应操作

通过HOOK代理拦截,就能指导其中的代码行为,进而对此行为进行拦截 比如我知道了发消息 wxid 文本 等参数 函数。就能自主模拟调用了对吧{这是个人拙见,做个比方实际上没这么简单,大家就假设性理解就行 别让我误人子弟哈-小岑感谢各位}

打赏

感谢您的支持,我会继续努力的!

打开微信扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在。
点赞 (0)

1:本站鼓励用户发布原创内容,但无法保证每位用户都遵守这一点,若内容侵犯了你的权益可及时联系管理员删除!
2:本站的部分文章来源于网络,内容仅供网友学习参考借鉴无其他,因用户个人行为对网络安全造成危害自行担责!
3:本站的内容不代表任何立场,并不代表本站赞同资源内容本身观点和对其真实性负责
4:本站一律禁止发布转载任何危害到互联网安全的内容信息,访客如若发现请及时向站长举报。
5:本站资源大多存储与各类云盘,如遇链接失效,请联系在线客服我们会第一时间为大家更新。
6:教学类作品请上传完整的附件文件,便于其他用户能够得到完整的学习资料,社区环境建设。
7:站点内容投稿发布,请遵循互联网相关安全协议规定,发布内容默认版权及相关责任归属发布者。
8:部分资源内容采集自互联网,不少资源经过采集发布后会有相关的广告引流信息为上一阶段资源拥有者自留,当前阶段无法完全处理屏蔽,若遇非本站信息,注意鉴别。
9:如果您喜欢本站,♥点这儿开通会员资助本站

YYemo_资源社区 原理讲解系列博客 原理机制-什么是HOOK? https://yyemo.com/395.html

学无止境,唯愚是罪!

已是最后文章
发表评论
暂无评论