VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 607|回复: 6

[求助] 怎么控制SetWindowsHookEx 是在自己进程回调 还是 其他进程注入回调?

[复制链接]
80_avatar_middle
online_vip lsla 发表于 2018-4-16 16:49:50 | 显示全部楼层 |阅读模式
3驿站币
我写了个 标准 dll  ,导出了个 键盘hook SetKeyBoardHook (内部调用   SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)KeyboardProc, GetModuleHandle(_T("standDll.dll")), 0);)   按理说这样是 全局钩子吧
在mfc调用 SetKeyBoardHook ,  然后不管我在上面地方 敲键盘 回调函数都发生在 我自己的 mfc 程序里,  相当于 我的全局钩子  就变成了   全局热键监控一样
我的目的是 注入dll 到其他程序,  然后百度了下  很多代码都是      打开其他进程  再在那个进程里进行  SetWindowsHookEx

msdn 是有说 Be aware that the WH_MOUSE, WH_KEYBOARD, WH_JOURNAL*, WH_SHELL, and low-level hooks can be called on the thread that installed the hook rather than the thread processing the hook

按我的理解  A进程加载 a.dll 注册 SetWindowsHookEx   something ,  然后  B 进程 发生了某时间,系统会自动为B进程加载a.dll   ?
是我理解有误  还是哪操作错了呢

最佳答案

查看完整内容

当 B进程 发生了某个键盘事件之后,楼主可以用进程模块工具看下,B进程中是否加载了 a.dll,同时楼主不用在 DLL 中下断点,直接在DLL的钩子函数中进行LOG的输出,输出的时候带上该DLL所在的EXE进程的路径,之后通过这个文件LOG再确认下是否正确!




上一篇:C语言求解
下一篇:万能的SYC大大

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

51_avatar_middle
online_admins Syc 发表于 2018-4-16 16:49:51 | 显示全部楼层
lsla 发表于 2018-4-16 21:37
然后我现在的意思是 A进程加载 a.dll 注册 SetWindowsHookEx   something ,  然后  B 进程 发生了某事件 ...

当 B进程 发生了某个键盘事件之后,楼主可以用进程模块工具看下,B进程中是否加载了 a.dll,同时楼主不用在 DLL 中下断点,直接在DLL的钩子函数中进行LOG的输出,输出的时候带上该DLL所在的EXE进程的路径,之后通过这个文件LOG再确认下是否正确!

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

51_avatar_middle
online_admins Syc 发表于 2018-4-16 17:16:22 | 显示全部楼层
然后不管我在上面地方 敲键盘 回调函数都发生在 我自己的 mfc 程序里?
什么意思,钩子函数不是在DLL中吗,怎么会在你自己的 mfc 程序里?

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

80_avatar_middle
ico_lz  楼主| lsla 发表于 2018-4-16 18:29:26 | 显示全部楼层
Syc 发表于 2018-4-16 17:16
然后不管我在上面地方 敲键盘 回调函数都发生在 我自己的 mfc 程序里?
什么意思,钩子函数不是在DLL中吗 ...

其实我是   直接引用了 dll 工程  ,  虽然在调试 mfc  在  dll 里下的断点还是能生效的    实际回调函数肯定是在 dll里的

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

51_avatar_middle
online_admins Syc 发表于 2018-4-16 21:12:35 | 显示全部楼层
lsla 发表于 2018-4-16 18:29
其实我是   直接引用了 dll 工程  ,  虽然在调试 mfc  在  dll 里下的断点还是能生效的    实际回调函数 ...

嗯,那就行,可以在DLL的回调函数中写一些LOG,之后看看输出的内容对不对

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

80_avatar_middle
ico_lz  楼主| lsla 发表于 2018-4-16 21:37:21 | 显示全部楼层
Syc 发表于 2018-4-16 21:12
嗯,那就行,可以在DLL的回调函数中写一些LOG,之后看看输出的内容对不对

然后我现在的意思是 A进程加载 a.dll 注册 SetWindowsHookEx   something ,  然后  B 进程 发生了某事件,按理说系统会自动为B进程加载a.dll   ?  现在 事件回调全都在 A进程的  a.dll 里   怎么让事情发生在 B进程的a.dll

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

80_avatar_middle
ico_lz  楼主| lsla 发表于 2018-4-16 22:00:58 | 显示全部楼层
Syc 发表于 2018-4-16 21:49
当 B进程 发生了某个键盘事件之后,楼主可以用进程模块工具看下,B进程中是否加载了 a.dll,同时楼主不用 ...

https://stackoverflow.com/questi ... x-not-injecting-dll   
这个帖子的答复不错  也放在这里给大家看看  我明天再试试

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /1 下一条

QQ
QQ在线咨询
联系电话
13591366679
手机扫一扫 关注本站精彩内容
wxqrcode

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-9-24 20:17

Powered by Discuz! X3.4

© 2009-2018 cctry.com

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