关于全局HOOK的2个友情提醒

在用VC.NET编写全局钩子的时候,通常我们会通过共享数据段共享数据。比如下面的事列代码,
#pragma data_seg("myCBTHook")
HHOOK glhHook=NULL;
DWORD hookWinThread=NULL;
#pragma data_seg()

前一段时间在网上注意到有人把DLL glhInstance也放在了共享数据段中,这样做可能会另你
得到意想不到的结果。原因在于系统会为每个被Hook的Thread生成相应的
glhInstance,它们是不一样的。如果把其放在共享数据段,该变量会被不同的Thread重写,值会不断变化。
此外,在共享数据段中,你不能在共享数据段中保存指向共享数据段之外的指针变量和拥有独立内存管理的类(class)变量。

如果你有好多的方法共享类和指针,也请告所我。谢谢!

posted on 2005-04-13 16:57  Michael Zhao  阅读(2027)  评论(5编辑  收藏  举报