none
关于SetWindowsHookEx调用问题!!!~ RRS feed

  • 问题

  • MSDN中说当调用SetWindowsHookEx时,系统会把包含Hook procedure的DLL(Hook.dll)注入到指定线程所在的进程中去。这个“注入”与将DLL映射进进程的地址空间中去一样吗????

    做了如下测试:
    1、如果由于SetWindowsHookEx的调用会把“Hook.dll”映射进包含“线程dwThreadId”所在的进程地址空间中去,那么应该会调用DLL的入口函数“DllMain”,并且传递参数“DLL_PROCESS_ATTACH”进去。可是测试发现没有发生这个调用。

    2、如果由于SetWindowsHookEx的调用会把“Hook.dll”映射进包含“线程dwThreadId”所在的进程地址空间中去,那么系统应该会为DLL中定义的全局变量创建一套独立的副本。可是测试发现,由“线程dwThreadId”调用“Hook procedure”写DLL中的一个全局变量,这个变量与设置Hook的进程访问的是同一个。这说明这里的全局变量是同一个。

    以上测试,个人觉得“注入”与“映射”应该不是一个概念,可否有人来详细说明一下这个“注入”的概念!!!!??????

    谢谢!~

    2013年12月16日 14:21