关于全局钩子dll卸载的疑惑
我创建了一个钩子dll,有钩子函数,安装/卸载钩子函数。
在我的exe程序中安装钩子(LoadLibrary(...),InstallHook(...)),
然后卸载钩子(UnInstallHook(...),FreeLibrary(...))时产生了问题:
1.当我的钩子是 WH_KEYBOARD时,卸载时能正确调用DllMain中DLL_PROCESS_DETACH
2.当钩子是WH_CBT时,FreeLibrary返回成功,但却没有调用DllMain中的DLL_PROCESS_DETACH,但我的exe程序结束,才调用了DllMain(),这时dll已经被我卸载掉了。
请问诸位高人,这是怎么回事,FreeLibrary时不一定调用DllMain吗?
在我的exe程序中安装钩子(LoadLibrary(...),InstallHook(...)),
然后卸载钩子(UnInstallHook(...),FreeLibrary(...))时产生了问题:
1.当我的钩子是 WH_KEYBOARD时,卸载时能正确调用DllMain中DLL_PROCESS_DETACH
2.当钩子是WH_CBT时,FreeLibrary返回成功,但却没有调用DllMain中的DLL_PROCESS_DETACH,但我的exe程序结束,才调用了DllMain(),这时dll已经被我卸载掉了。
请问诸位高人,这是怎么回事,FreeLibrary时不一定调用DllMain吗?
...全文
相关推荐
[VB6+C-DLL]全局钩子
http://blog.csdn.net/tzwsoho/archive/2010/08/12/5806925.aspx
不依赖于DLL就能工作的全局钩子apihook
不依赖于DLL就能工作的全局钩子.zip
VC下实现全局钩子源代码
VC下实现全局钩子源代码,同过调用DLL,实现对键盘消息的捕获,直接在工程中添加DLL和LIB文件,调用函数即可。
C++ HOOK源码 全局钩子
HOOK 源码 全局钩子 键盘钩子 亲测可用 部分中文注释。
利用反射,动态加载DLL,卸载DLL
反射的加载与卸载,适用于需要经常变换更新的地方。 代码里文件路径是编译的路径(需要替换为自己的存放路径),我是将DLL拷贝到EXE文件夹下测试的,在没有卸载完,拷贝覆盖不了,卸载后就可以覆盖了。


进程/线程/DLL
