首页
社区
课程
招聘
突然,突然的臆想。
发表于: 2012-11-13 12:56 4756

突然,突然的臆想。

2012-11-13 12:56
4756
今天偶然看到一片文章,是讲windows消息钩子机制的。

产生了一点疑问。
我对某其它进程的某窗口线程挂钩某消息后,其消息对应的钩子处理函数依然在本进程内,
那么对方的进程收到消息后是如何调用到我进程内的函数的呢? 如果是系统调用的,为何全局钩子却需要一个dll?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 142
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
你用个进程查看工具看看目标进程的模块,如果挂钩成功,就会看到你的dll其实已经运行在目标进程里了.这有点像"自动注入".所以不是调用你进程内的函数,是你的函数通过dll的形式跑到对方进程里去了.
2012-11-13 13:14
0
雪    币: 55
活跃值: (531)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
3
哦,是我理解错误了,抱歉。
基于线程的并不算注入,系统调用了我们的回调函数对消息处理,而后我们的处理后的消息返回给系统,系统继续往对方程序的消息队列派发消息。
全局钩子则可以带着函数的dll进入对方进程。
2012-11-13 13:21
0
雪    币: 544
活跃值: (264)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
4
看win2k源代码吧,一下子就明白了
2012-11-14 19:19
0
雪    币: 55
活跃值: (531)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
5
我也不知道为什么我写的钩子注入会是那么个情况,提示注入成功,而窗口却属于本进程。

别人写的钩子注入却可以直接注入到目标程序。但当这段代码移到32位上执行的时候却又可以了。
2012-12-2 22:40
0
游客
登录 | 注册 方可回帖
返回
//