首页
社区
课程
招聘
关于一个hook的问题
发表于: 2010-2-1 23:35 3769

关于一个hook的问题

2010-2-1 23:35
3769
大家好,小弟最近研究一个小程序,想拦截发送给窗口的信息,
我用HOOK拦截到了消息,但是我不想让这个消息被发送到窗口上,
想给消息摧毁,请问如何操作。谢谢

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

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 71
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
不太明白
你既然hook了
没有转发消息发送的代码
窗口就不可能收到拦截的消息

转发函数
CallNextHookEx(hKeyboardHook, nCode, wParam, lParam);//继续消息的发送
2010-2-2 00:25
0
雪    币: 458
活跃值: (421)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
3
将 return  CallNextHookEx(hKeyboardHook, nCode, wParam, lParam);
换成 return TRUE;
就完成了拦截的作用。
2010-2-2 09:35
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
楼上正解~~~
2010-2-2 09:59
0
雪    币: 18
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
函数原形:LRESULT CALLBACK CallWndProc(int nCode,WPARAM wParam,LPARAM lParam );

参数:

nCode:指定该挂钩处理过程是否必须对该消息进行处理,若nCode 是HC_ACTION,则该挂钩处理过程必须处理该消息.若nCode的值小于0,则此挂钩处理过程必须在未对该消息作进一步处理的情况下,将其发送给函数 CallNextHookEx并返回由 CallNextHookEx返回的值.

wParam:指示该消息是否由当前线程发出,若该消息由当前线程发出,其值为非0值,否则,其值为0.

lParam:指向一个CWPSTRUCT结构,该结构包含了此消息的详细消息.

返回值:若nCode的值小于0,则此挂钩函数必须返回函数CallNextHookEx所返回的值;若nCode的值大于或等于0,我们极力推荐对函数CallNextHookEx进行调用,并返回其返回值.否则,其他安装了WM_CALLWNDPROC挂钩的应用程序将无法收到挂钩通知,从而导致错误的行为.若此挂钩没有调用函数CallNextHookEx,则返回值为0.

备注:挂钩处理函数CallWndPro可以对消息进行检查,但不能修改之.在该挂钩处理过程将控制返回给系统之后,该消息被发送至相应的窗口过程.

一个应用程序通过调用SetWindowsHookEx时指定WM_CALLWNDPROC挂钩类型及其相应挂钩处理过程的首地址来安装挂钩处理过程.

挂钩WM_CALLWNDPROC是在调用函数SendMessage的线程中被调用的,它并非在接受消息的线程中被调用.

同学,我用的就是这个钩子,结果备注里面写还是被发到目标窗口了。我想不发过去,有什么方法吗。
我返回TRUE或者0都试了,还是不行。。。呵呵~
2010-2-2 21:15
0
雪    币: 18
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
同学在帮我看下好吗。。不行。。我在上面说明了~
2010-2-2 21:15
0
雪    币: 18
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
呃不行。。。你再帮我看看好吗。同学
2010-2-2 21:16
0
雪    币: 18
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
我查到了,用这个HOOK就行,直接返回不调用CallNextHook
WH_GETMESSAGE

不过还是会发送到目标窗口上,不会截获,摧毁消息。。
我用的是对话框,不是窗口,与这个有关系吗

补充一下。我用WM_NULL代替了原来的消息,可以达到修改消息的目的(Msg->message)但是还是向目标窗口发送了一个WM_NULL我想不发送,这个消息直接从队里面去掉。该怎么做啊。。
2010-2-2 21:31
0
雪    币: 56
活跃值: (276)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
3楼正解
2010-2-2 22:40
0
雪    币: 65
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
直接将程序里对SENDMESSAGE函数的调用给NOP掉不就行了?
2010-2-3 09:37
0
游客
登录 | 注册 方可回帖
返回
//