日期:2014-05-17  浏览次数:20826 次

hook访问dll全局变量的问题
大家好!我用vc++ 6.0做了一个程序,用hook拦截其他进程的鼠标消息。在当前进程中调用一个dll中的setHook函数(自定义的),在setHook函数中用setwindowshookex安装钩子过程,并设置了几个dll中的全局变量。但我在实验中发现,在钩子过程中使用dll的全局变量时,其值仍然是初始化的值,并没有变为setHook中设置的值。  
  我在孙鑫的视频中看到他的hook程序,貌似我的程序和他的没什么区别,但他的却可以使用全局变量。我在自己机子上实验,发现只有hook钩子无法使用全局变量,而普通的函数,比如我再导出一个test函数,在test中是可以使用dll全局变量的。
请问这是什么原因导致的呢?钩子过程调用dll中的函数时会重新加载dll,重新初始化dll的全局变量吗? 请知道的朋友赐教,不胜感激!

------解决方案--------------------
http://blog.csdn.net/yiyefangzhou24/archive/2011/03/08/6230928.aspx
原理相同