通过CreateRemoteThread这种注入的方法就是不行,这个的确是这样的,原因不详。
但可以通过在创建新线程的入口SetWindowsHookEx,实践证明是可行的

解决方案 »

  1.   

    谢谢回答,希望是这个原因,呵呵,不知道这位大哥说的是不是通过远程加载dll的地址,找到SetWindowsHookEx的地址,再通过CreateRemoteThread调一次?
      

  2.   

    不是的
    是下面的
    case DLL_THREAD_ATTACH:
      

  3.   

    用钩子能实现exe注入,用CreateRemoteThread也可以实现,没必要两者结合用CreateRemoteThread去载入钩子的dll。你建立钩子的位置也不对:
    case DLL_PROCESS_ATTACH:
    {
    。。
    glhHook=SetWindowsHookEx(WH_MOUSE_LL,(HOOKPROC)MouseProc,glhInstance,0);
    。。
    }
    写在这里的话,第一个钩子产生了,dll会载入到别的进程,这样又会产生新的钩子,连锁反应。判断下glhHook==NULL再建立。别的地方没看,csdn把代码弄得好乱。
      

  4.   

    和我的问题一样,一开始写成EXE直接挂目标没问题;
    转个弯,变成DLL,先注入到第三者中,再来挂钩目标,就死也不见钩子调用....