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

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

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

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


3。从资料上看到,设置了全局HOOK后,钩子子程的DLL将被注入其他所有进程,那么本EXE程序退出后,其他进程的DLL是否会自动被释放。
...全文
15 2 打赏 收藏 举报
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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
顶下
  • 打赏
  • 举报
回复
相关推荐
发帖
进程/线程/DLL

1.5w+

社区成员

VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
帖子事件
创建了帖子
2003-05-28 08:32
社区公告
暂无公告