问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

钩子函数的原理c/c++

发布网友 发布时间:2022-04-07 08:31

我来回答

5个回答

热心网友 时间:2022-04-07 10:00

我的个人理解:
钩子函数其实就是函数指针,系统或软件定义好一些钩子,而你来把这些钩子挂接起来!说白了就是有些动作系统需要针对不同的情况做不同的处理,此时就需要定义一个钩子。具体的操作由用户挂上的钩子函数实现.
比如:
#include "stdio.h"
void (*g_say_func)(void);

void regist_say( void (*pfunc)(void ) )
{
g_say_func = pfunc;
}

void humen_say()
{
printf("hello world!!!\n");
}

void dog_say()
{
printf("wo wo !!!\n");
}

void cat_say()
{
printf("miao miao!!!");
}

void say_hello()
{
g_say_func();
}

void main()
{
regist_say(dog_say); //注册钩子函数
say_hello();
}

以上纯粹是个人理解!追问你写的这个好像只能说是回调吧?不是说钩子是特殊的回调吗,我怎么没看出这里面有什么特殊的地方啊

追答我也是看过linux netfilter钩子的时候,把钩子理解成这样。也不知道有没有理解错!

热心网友 时间:2022-04-07 11:18

例如键盘钩子,操作系统取得按键输入之后,会把这个按键消息发给当前的激活的窗口程序(例如word),但在发送给窗口程序之前,会先把这个按键消息作为参数调用一个函数,这个函数就是钩子函数,通常情况下,这个函数是一个空函数,如果你安装了钩子函数之后呢,这个函数就会跳转到你自己写的程序上,这时候你自己的程序就可以先处理这个键盘消息。这就是钩子函数的基本工作过程。

热心网友 时间:2022-04-07 12:53

构子也叫hook,一般用来钓鱼的,有几种分类方式,一般我都理解为用户级和内核级的hook。介绍的文章么,网上有很多了,我只在ccrun上写过一篇《API Hook基本原理和实现》,文库中有这篇文章,很肤浅。hook可以做很多事,如监控鼠标和键盘,远程注入其他程序。内核中的hook与使用api的那种hook已经很不一样了。微点对这个hook的机制弄得还不错,一般的hook都可以拦住。

hook的代码例子有很多,如老外的
http://www.codeproject.com/KB/system/HookSys/HookSys_code.zip
我在文章中也提了一个例子,源代码不知在ccrun上是否还可查到,如需要可留下邮箱。

热心网友 时间:2022-04-07 14:44

观望。。。。

热心网友 时间:2022-04-07 16:52

钩子本质上是一个jmp指令,win32提供的钩子都是比较高层的钩子。
除非API为你提供了钩子回调机制,否则你只能用“注入”的方式挂上钩子。
一个典型的,教科书式的方法:首先得到程序中函数的转跳地址,对于像user32.dll这种库,里面的地址万年不变的,然后在push参数之后,插入二进制(动态挂钩子)转跳指令,转跳地址就是你的钩子函数,在这个函数中你可以得到原来函数所有的参数。完成操作之后弹栈回跳要注意,不可将参数栈一起弹出,否则被钩挂的函数可能异常。
动态挂钩的过程,本质上是对程序代码段的一种写操作
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
莲花冬天发芽好吗 过冬荷花什么时候发芽 一个手机号怎样登陆两个孩子的长沙市中小学生人人通云平台 人人通怎么进入学校 人人通电脑版学生怎样登录 名侦探柯南真人版3为什么要换人? 真人版柯南,你最喜欢小栗旬还是沟端淳平? 央企中国稀土集团落户江西,衷心希望江西摆脱“环江西经济带”地位_百度... 来天津的央企有哪些 东丽区的央企有哪些 打毛线拖鞋怎么打了多少针 小甲鱼的肚子是什么颜色 哑鱼多少钱一斤,又名洋鱼,求图片和价格。 漫屋青色是什么意思? 藏区钓鱼,上钩的鱼多半都不认识,能吃吗 小爱同学天猫精灵小度对酒店的作用 猜迷诗午夜梦回我走进了一间屋看见那屋开了三扇门有一 求:和我说的性格差不多的好看的校园言情小说 请问大神这是什么鱼? 供佛的屋看了色剧情电视有事吗? 怡亲王胤祥因为做了什么他人难模仿的事,才会被雍正重用? 当一个女人和一个男人在一屋感觉会不会有事 美豪丽致酒店智能音箱叫什么 让人少女心爆棚,49平米的糖果色屋子是什么样子的? 九子夺嫡,兄弟相残,雍正登基后为何唯独宠信怡亲王允祥? 普杰科技智慧酒店有哪些特色? 桃色屋 三国无惨系列(要有王元姬 蔡文姬的) 雍正时的怡亲王允祥是怎么死的? 求 パパラブ ~パパとイチャエロしたい娘达と一つ屋根の下で~游戏 316不锈钢保温杯什么标志属于底部316什么标志属于整体316 起针被扎到手了 那个人有乙肝 传染不 关系好的女性朋友备注 被小三阳患者的针头刺破手指,会感染乙肝吗? 给女朋友的备注什么最好呢 给女朋友个什么样的备注比较合适 给女朋友的暖心备注?要特别的 建行社保卡网上激活流程流程 电脑上的各类直播平台,比如虎牙,快手,抖音,哔哩哔哩等等,开直播都跟电脑机箱里的什么配件有关呢? 理光MP C2011SP打印机更换墨盒后为何仍显示显示需要更换碳粉? csgo欲进行游戏的方式不弹出来 CSGO都有哪些游戏模式? 我是新人,求大神告诉我csgo怎么才能开始游戏 陕西什么糕不会念 我是联想的电脑 为什么装了蓝牙却不能用 点击蓝牙图标却没有任何反应 那年花开月正圆周莹爱吃的甑糕怎么读 单眼皮眼角没开的肿眼泡怎么贴双眼皮贴 联想平板电脑连接电脑没反应 联想平板电脑蓝牙键盘怎样连接电脑 曾瓦怎么读甑糕? CSGO在哪里选择玩法模式 CSGO有哪些玩法