关于HOOK和 Dll的几个疑问,请大家帮我看看

bearhunter 2003-05-28 08:32:10
最近我看了关于HOOK的一些文章,写了一个键盘消息的HOOK程序,程序调通了,不过有了以下的疑问。

1。我用的是全局HOOK, 钩子子程放在一个DLL里,我用隐式调用此Dll只能钩住本进程,钩其他进程时导致钩子自动被卸载,用显式调用问题解决,为什么?

2。怎样设置全局变量,能在EXE和DLL之间交换数据,在2边应该怎么设?


3。从资料上看到,设置了全局HOOK后,钩子子程的DLL将被注入其他所有进程,那么本EXE程序退出后,其他进程的DLL是否会自动被释放。
...全文
40 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
rivershan 2003-05-28
  • 打赏
  • 举报
回复
1、我想是隐式调用用到了库的原因吧……不太清楚~

2、
#pragma data_seg预处理指令用于设置共享数据段。例如:
#pragma data_seg("SharedDataName")
HHOOK hHook=NULL;
#pragma data_seg()
在#pragma data_seg("SharedDataName")和#pragma data_seg()之间的所有变量将被访问该Dll的所有进程看到和共享。再加上一条指令#pragma comment(linker,"/section:.SharedDataName,rws"),那么这个数据节中的数据可以在所有DLL的实例之间共享。所有对这些数据的操作都针对同一个实例的,而不是在每个进程的地址空间中都有一份。

3、你退出的时候没有自己来维护钩子的退出吗?如果是结束了本exe的进程,2000会自己维护钩子的~
bearhunter 2003-05-28
  • 打赏
  • 举报
回复
顶下

15,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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