钩子&UAC

j8daxue 2010-02-05 09:46:02
一个键盘钩子,开始还好,不过奇怪地发现在VISUAL STUDIO下按了什么都没反映。
还以为是VS做了一定的处理,后来一想,可能是不同用户权限问题,果然,凡是以管理员启动的窗口都没截获到
消息。
不知道有没什么处理方法??
...全文
259 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzjdlsl 2010-02-08
  • 打赏
  • 举报
回复
// 分配虚拟内存.
LPVOID lpBaseAddress;
lpBaseAddress = VirtualAllocEx(hProcess, 0, BUFFER_SIZE,
MEM_COMMIT, PAGE_READWRITE);
那你有没在目标进程中分配内存?
j8daxue 2010-02-08
  • 打赏
  • 举报
回复
引用 20 楼 oyljerry 的回复:
引用 16 楼 j8daxue 的回复:引用 14 楼 lzjdlsl 的回复: 你说的:凡是以管理员启动的窗口都没截获到消息。你是注册了一个消息吗?如果是注册了一个消息的话,要用ChangeWindowMessageFilter添加进可信队列提高权限在ie上才能跑。这个和我遇到的问题一样。我也是在dll中定义了一个钩子。发消息和ap交互,一开始在win7的ie上不行调试发现是消息发不过去。用这样的方式解决了。你可以尝试下 不是消息,是通过共享内存和AP通信的。在一些管理员启动的窗口按了特定的键后钩子并没有反应。 QQ09也有这个情况,在管理员启动的VS中,按热键启动QQ,也是没反应
QQ做了自己的保护,防止你的键盘钩子...

我的意思是,比如我对QQ设置的热键SHIFT+Z启动QQ界面。
如果在管理员模式打开的VS中按热键会无效。
其他管理员启动的程序都一样

而我自己用钩子设置的热键在QQ对话框中按的话还是有效的。

项目经理说年后再想办法,谢谢大家的回复!
oyljerry 2010-02-08
  • 打赏
  • 举报
回复
引用 16 楼 j8daxue 的回复:
引用 14 楼 lzjdlsl 的回复:
你说的:凡是以管理员启动的窗口都没截获到
消息。
你是注册了一个消息吗?如果是注册了一个消息的话,要用ChangeWindowMessageFilter添加进可信队列提高权限在ie上才能跑。这个和我遇到的问题一样。我也是在dll中定义了一个钩子。发消息和ap交互,一开始在win7的ie上不行调试发现是消息发不过去。用这样的方式解决了。你可以尝试下

不是消息,是通过共享内存和AP通信的。
在一些管理员启动的窗口按了特定的键后钩子并没有反应。
QQ09也有这个情况,在管理员启动的VS中,按热键启动QQ,也是没反应

QQ做了自己的保护,防止你的键盘钩子...
j8daxue 2010-02-08
  • 打赏
  • 举报
回复
引用 18 楼 webxeyes 的回复:
你确定dll加载了?人家自己hook一下LdrLoadMoudle你钩个屁呀钩,都不知道自己的问题出在哪里了就开始解决问题了

恩,求解决方法!
「已注销」 2010-02-08
  • 打赏
  • 举报
回复
你确定dll加载了?人家自己hook一下LdrLoadMoudle你钩个屁呀钩,都不知道自己的问题出在哪里了就开始解决问题了
j8daxue 2010-02-07
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 lzjdlsl 的回复:]
你说的:凡是以管理员启动的窗口都没截获到
消息。
你是注册了一个消息吗?如果是注册了一个消息的话,要用ChangeWindowMessageFilter添加进可信队列提高权限在ie上才能跑。这个和我遇到的问题一样。我也是在dll中定义了一个钩子。发消息和ap交互,一开始在win7的ie上不行调试发现是消息发不过去。用这样的方式解决了。你可以尝试下
[/Quote]
不是消息,是通过共享内存和AP通信的。
在一些管理员启动的窗口按了特定的键后钩子并没有反应。
QQ09也有这个情况,在管理员启动的VS中,按热键启动QQ,也是没反应
xwsn007 2010-02-06
  • 打赏
  • 举报
回复
呵呵,都不学好
lzjdlsl 2010-02-06
  • 打赏
  • 举报
回复
你说的:凡是以管理员启动的窗口都没截获到
消息。
你是注册了一个消息吗?如果是注册了一个消息的话,要用ChangeWindowMessageFilter添加进可信队列提高权限在ie上才能跑。这个和我遇到的问题一样。我也是在dll中定义了一个钩子。发消息和ap交互,一开始在win7的ie上不行调试发现是消息发不过去。用这样的方式解决了。你可以尝试下
lzjdlsl 2010-02-05
  • 打赏
  • 举报
回复
这个问题我以前也遇到过。问题不在于你的钩子。而是你注册消息的问题。在vista以上版本注册消息ChangeWindowMessageFilter(RegMes,MSGFLT_ADD); 通过这种方式才行。不过注意一点。在xp下用这个会运行时错误。不过可以把这个放到一个dll中。动态链接这个dll(静态会出错),先判断操作系统版本。vista以上的调这个库
MoXiaoRab 2010-02-05
  • 打赏
  • 举报
回复
钩子失效,很有可能是因为你的IE7 。
IE7会自动让钩子失效,原因我忘记了,反正是出于安全考虑。
还有一些高安全的程序,会让钩子失效。
bilaopao 2010-02-05
  • 打赏
  • 举报
回复
哥们,快点结贴,去找鹦鹉要分去。
havedown 2010-02-05
  • 打赏
  • 举报
回复
mark
bilaopao 2010-02-05
  • 打赏
  • 举报
回复
你用钩子的时候如果不是全局底层钩子是一定要有dll注入到目标进程的。

在VISTA之后的操作系统,权限控制的很严格。

你这个情况可能是因为你的程序的权限低于目标程序的权限,导致钩子无法正确的注入到目标进程空间导致的。

解决方法就是在你的工程中,右键属性,连接器,清单文件,然后把UAC级别改为requireAdministrator 或者嵌入manifest,赋予本应用程序requireAdministrator权限 ,重新编译之后,直接运行你的程序就拥有requireAdministrator权限了。 这样就可以正确安装钩子。
hlq83 2010-02-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 j8daxue 的回复:]
引用 1 楼 jx1j1x 的回复:
什么操作系统?

Windows

引用 2 楼 hlq83 的回复:
什么操作系统?

钩子程序以管理员启动,那有不以管理员启动的程序呢?
[/Quote]
默认的程序都是以当前登陆用户的身份启动吧,vista以后右击可以选择以管理员身份运行。
j8daxue 2010-02-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jx1j1x 的回复:]
什么操作系统?
[/Quote]
Windows

[Quote=引用 2 楼 hlq83 的回复:]
什么操作系统?
[/Quote]
钩子程序以管理员启动,那有不以管理员启动的程序呢?
hlq83 2010-02-05
  • 打赏
  • 举报
回复
你的钩子程序也以管理员方式启动可以么
jx1j1x 2010-02-05
  • 打赏
  • 举报
回复
什么操作系统?
j8daxue 2010-02-05
  • 打赏
  • 举报
回复
其他程序好像可以了,不过IE8里还是捕获不到消息
j8daxue 2010-02-05
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 lllmaliyuan 的回复:]
很具体了啊。只要ChangeWindowMessageFilter(你的消息名,MSGFLT_ADD);这样就可以提升你消息的权限,然后按照我说的步骤这样弄。如果你不用考虑xp和win7都要跑的话每必要加个dll

[/Quote]
不是给某个窗口发消息,是一个键盘钩子。。
lllmaliyuan 2010-02-05
  • 打赏
  • 举报
回复
很具体了啊。只要ChangeWindowMessageFilter(你的消息名,MSGFLT_ADD);这样就可以提升你消息的权限,然后按照我说的步骤这样弄。如果你不用考虑xp和win7都要跑的话每必要加个dll
加载更多回复(1)

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧