首页
社区
课程
招聘
[求助]dll注入后钩子不好使。请教
发表于: 2009-5-3 08:14 4592

[求助]dll注入后钩子不好使。请教

2009-5-3 08:14
4592
做了一个DLL注入的简单程序。目的是在目标程序中HOOk到F12键,作为呼出窗体热键。
注入成功。可是钩子却并不好使。请教为什么?

代码片断1:(DLL入口)
BOOL WINAPI DllMain( HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved )
{
  switch( fdwReason )
  {
  case DLL_PROCESS_ATTACH:
    if( !installhook( hinstDLL ) )
    {
      MessageBox( NULL, TEXT("Set KBHook error"), TEXT("ERROR"), MB_ICONERROR );
    }
。。。。

代码片断2:(装置钩子函数)
BOOL installhook( HINSTANCE hinstDLL )
{
  hins = hinstDLL;
  hkb=SetWindowsHookEx( WH_KEYBOARD, (HOOKPROC)KeyboardProc, hins, 0 );
  if( NULL == hkb )
    return false;
  return true;
}

LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
  if( nCode == HC_ACTION )
  {
    {
      if( VK_F12 == wParam )
        MessageBox( NULL, TEXT("F12 Key Pressed"), TEXT("TEST"), MB_OK );
    }
  }
  return CallNextHookEx( hkb, nCode, wParam, lParam );
}

奇怪的现象是:DLL在收到“PROCESS_ATTACH”的通知了以后,紧接着就收到了“THREAD_DETACH”通知。是这个原因钩子才不好使得么?DLL为什么瞬间就从线程中被分开了?

感谢,任何有帮助的提示和回答。

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

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 2105
活跃值: (424)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
不要在dllmain中调用installhook,把installhook导出来调用。。
可以CreateRemoteThread执行下面代码:
push "hook.dll"
call LoadLibraryA
push "installhook"
push eax
call GetProcAddressA
call eax
2009-5-3 12:56
0
雪    币: 65
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
膜拜一个

正在学
2009-5-6 10:55
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
把BOOL installhook( HINSTANCE hinstDLL )导出来在exe里调用
2009-5-6 17:56
0
雪    币: 100
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
围观中。。。。
2009-5-8 08:00
0
雪    币: 129
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
如果是全局钩子。
DLL入口SetWindowsHookEx的话不行。

这样注入一个DLL就调一次,DLL里又调了一次,又一个全局钩子,这样就不正常了,卸也卸不了了.
2009-5-8 20:52
0
游客
登录 | 注册 方可回帖
返回
//