我使用远程注入向目标进程注入了一个DLL想在目标DLL的初始化中安装一个钩子...问:如何获取DLL所在进程的主线程, 有啥办法? 问:钩子必须安装在主线程上吗?我自己开一条线程让其马上运行,然后将钩子安装在我自己的线程上,可行吗?谢谢!!!新手。。打扰大家了!

解决方案 »

  1.   

    来凑个热闹!
    不知道你说的是不是安装钩子函数SetWindowsHookEx(int idHook,HOOKPROC lpfn,HINSTANCE hMod,DWORD dwThreadId)最后两个参数的问题
    比如说在某个窗口上安装钩子,
    HWND g_Hwnd =::FindWindowEx(NULL,NULL,"窗口Class",NULL);DWORD g_dwThreadId;
    GetWindowThreadProcessId(g_Hwnd, g_dwThreadId); //返回值存放在g_dwThreadId中
    或者把返回值放入DWORD PID中:
    DWORD PID=GetWindowThreadProcessId(g_Hwnd, g_dwThreadId);HINSTANCE hDll = ::GetModuleHandle("xxxx.dll");接下来就可以只在你想HOOK的那个窗口安装钩子了(这里解释一下,比如钩子函数中使用的是键盘Enter,当按下Enter怎样怎样,这里的意思是只有在这个窗口上当按下Enter才怎样怎样)
    HHOOK g_hKey =SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)KeyboardProc,hDll,PID);可能我说的不是你想要的哦
      

  2.   

    确实不是我想要的。。我的DLL已经注入了目标进程。。现在我想在目标进程中安装一个钩子!!~~~~ 不过还是谢谢你