看流星社区

 找回密码
 注册账号
查看: 2869|回复: 4

WH_GETMESSAGE的钩子,为啥全局钩的上,针对线程的就报错?

[复制链接]

该用户从未签到

发表于 2011-4-6 09:12:34 | 显示全部楼层 |阅读模式
这是一个wh_getmessage的钩子

BOOL WINAPI startHook(DWORD threadID)
{
    if (hHook!=NULL) return TRUE;

    hHook = SetWindowsHookEx(WH_GETMESSAGE, getMsgProc, pInstance, 0);
    if (hHook == NULL) return FALSE;
    return TRUE;
}


setwindowshookex的第四个参数如果为0,即为全局Hook,钩子就能安装上,但是使用了传入的treahdID,传入的参数没错,就抱错,我getlasterror,返回的是87,参数不正确,为什么?

该用户从未签到

发表于 2011-4-6 09:12:40 | 显示全部楼层
完美好像对api hook做了反侦测...一用api hook就报错

该用户从未签到

发表于 2011-4-6 09:12:46 | 显示全部楼层
钩的是武林,哪位知道阿?
虽然全局的局部的都能用,不过我还是想知道为什么会报错,google了一下,都是语焉不详的,郁闷。

该用户从未签到

 楼主| 发表于 2011-4-6 09:13:05 | 显示全部楼层
不好意思,解决了,这也看出了基础太不扎实  
原因在于setwindowshookex的第四个参数需要的是threadid,在调用的地方,我用的是
getwindowthreadprocessid(hwnd,pid)
实际上,这个函数有两个作用,如果第二个参数为Null,则函数本身返回该hwnd的主线程id,否则pid为hwnd的进程id,郁闷,该打。

该用户从未签到

发表于 2011-12-2 18:51:04 | 显示全部楼层
支持楼主,这贴必须得顶
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-5-3 16:03

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表