首页
社区
课程
招聘
[求助]在DLL中用SetWindowsHookEx挂空钩子进行代码注入问题
发表于: 2008-4-23 10:06 16253

[求助]在DLL中用SetWindowsHookEx挂空钩子进行代码注入问题

2008-4-23 10:06
16253
在DLL中用SetWindowsHookEx挂空钩子进行代码注入时,自己的函数体要放在什么位置,也就是怎么启动自己的函数。
比如:
void hhh()
{
int i;
        for(i=0;i<5;i++)
  MessageBox(NULL,"完成",NULL,1);
}

要启动hhh要怎么办?
把hhh放在SetWindowsHookEx后一行,代码并没有注入成功,即信息框的ID不是目标进程ID。
把hhh放在:
LRESULT WINAPI Hook(int nCode,WPARAM wParam,LPARAM lParam)//空的钩子函数
{
   if(cs==false)
   {
           hhh();
           cs=true;
           UninstallHook();
   }
   return(CallNextHookEx(g_hHook,nCode,wParam,lParam));
}
函数hhh到是启动了,也注入了目标进程(用SPY++查到的进程ID和目标进程ID相同),但是却是无限循环弹出信息框,更麻烦的是,目标进程结束不了,点退出按钮没反映,点窗口上的“X”,窗口倒是退出了,但是进程还在。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 215
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
因为你的MessageBox函数又触发了钩子回调函数
2008-4-23 10:14
0
雪    币: 107
活跃值: (1683)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
3
注入代码应该是 远程线程 你那个只是安了一钩子 最多也就只把DLL加载到内存了
2008-4-23 10:20
0
雪    币: 217
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
难到还要远程执行线程吗?高手们给个用DLL空钩子注射进程的VC++实例吧
2008-4-23 11:01
0
雪    币: 215
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
http://hi.baidu.com/combojiang/blog/item/cd6269de0b8cf55dccbf1a1b.html
2008-4-23 23:55
0
雪    币: 217
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
caocunt 兄所发的链接主要是讲鼠标钩子的安装运用。谢谢了。
但是,我要的是利用钩子注射函数体到目标进程,并启动所注射的函数体。我已经把钩子放到DLL了。
2008-4-24 16:11
0
雪    币: 215
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
看海风月影的那篇ApiHookLib的帖子就明白了.
2008-4-25 11:00
0
雪    币: 424
活跃值: (10)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
8
LRESULT CALLBACK GetMsgProc(
  int code,       // hook code
  WPARAM wParam,  // removal option
  LPARAM lParam   // message
)
{
                         return (LRESULT)CallNextHookEx(g_hook,code,wParam,lParam);
}

...
switch(uMsg)
{
....
case WM_COMMAND:
     if(LOWORD(wParam) == IDC_INSTALLHOOK)
    {
            g_hook = SetWindowsHookEx(WH_GETMESSAGE,GetMsgProc,GetModuleHandle("xxx.dll"),0);
           /*g_hook = SetWindowsHookEx(WH_GETMESSAGE,GetMsgProc,NULL,dwThreadID);*/
    }
return TRUE;
....
}

.......................   全局钩子(SetWindowsHookEx( , , , 0)) 钩子代码在dll

hook.dll

..
BOOL WINAPI DllMain(
    HINSTANCE  hModule,
    DWORD  dwReason,
    LPVOID  lpvReserved
    )
{
        if(dwReason == DLL_PROCESS_ATTACH)
        {
                MessageBox(NULL,"hello","hello",0);           //  *
                return TRUE;
        }
}
2008-4-25 12:14
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
楼上的正解!
2008-6-6 16:00
0
雪    币: 231
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
论坛上DELPHI原代码,和C差不多的,一看就明白,建议搜下
2008-6-6 16:13
0
游客
登录 | 注册 方可回帖
返回
//