首页
社区
课程
招聘
关于全局hook卸载问题
发表于: 2009-10-29 13:42 6121

关于全局hook卸载问题

2009-10-29 13:42
6121
dll文件中是一个全局键盘钩子 功能是记录键盘按键到一个文件中
用MFC(exe)调用
void CMainDlg::OnButton1()
{
        HMODULE h=LoadLibrary("hook.dll");
        if(h!=NULL)
        {
                //MessageBox("安装成功");
                InstHOOK insthook;
                insthook=(InstHOOK)GetProcAddress(h,"InstallHOOK");
                insthook();
               
        }
        FreeLibrary(h);       
}

void CMainDlg::OnButton2()
{
        HMODULE h=LoadLibrary("hook.dll");
        if(h!=NULL)
        {
                //MessageBox("卸载成功");
                UninstHOOK uninsthook;
                uninsthook=(InstHOOK)GetProcAddress(h,"UninstallHOOK");
                uninsthook();
               
        }
        FreeLibrary(h);
       
}
能加载  而OnButton2()不能卸载掉钩子  是不是又加载了一次库文件 请明白的人解决一下      怎么才能卸载?

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 522
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
GetModuleHandle吧
2009-10-29 13:56
0
雪    币: 239
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
void CMainDlg::OnButton1()
{
  HMODULE h=LoadLibrary("hook.dll");
  if(h!=NULL)
  {
    //MessageBox("安装成功");
    InstHOOK insthook;
    insthook=(InstHOOK)GetProcAddress(h,"InstallHOOK");
    insthook();
   
  }
//  FreeLibrary(h); 如果FREE后,就没有办法再Uninstall了
}

void CMainDlg::OnButton2()
{
//  HMODULE h=LoadLibrary("hook.dll");
// 这里的HMODULE 句柄 要为 BUTTON1中的句柄
  if(h!=NULL)
  {
    //MessageBox("卸载成功");
    UninstHOOK uninsthook;
    uninsthook=(InstHOOK)GetProcAddress(h,"UninstallHOOK");
    uninsthook();
   
  }
  FreeLibrary(h);
  
}
2009-10-29 14:42
0
雪    币: 167
活跃值: (136)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢了  这样OnButton2() 就无法卸载了
把 h 定义成全局变量
达到理想状态
2009-10-30 18:39
0
游客
登录 | 注册 方可回帖
返回
//