通过在B.dll中设置全局钩子,用A.exe将其注入到所有进程中。A.exe退出的时候所有进程中的B.dll都退出了。
我想让A.exe退出的时候,其他进程中的B.dll仍然保留该怎么做?
在网上找了说;考虑 使用 一个 DLL 钩子调用 另一个 DLL 实现完全注入。
想了半天还是不知道具体怎么搞。

解决方案 »

  1.   

    注入的DLL钩子,再LoadLibrary加载另一个dll,这个dll就不会退出..
      

  2.   

    要是注入到所有线程中,怎么卸载这些注入的dll?
    用远程卸载的办法?有没有其他办法?
    呵呵,别说让我把机器重启一下……
      

  3.   

    http://www.vckbase.com/document/viewdoc/?id=1886
      

  4.   

    注入进去之后就不太好卸了啊,要找到那个EXE的中的注入的DLL的句柄,然后Free掉,如果是全局钩子,全都去卸,够你忙的了
      

  5.   

    在注入的dll中怎么再Load另一个dll?
    我这样写的。运行的时候出现错误了。错误在下面。
    #include "stdafx.h"
    #include "Ghook3.h"#ifdef _MANAGED
    #pragma managed(push, off)
    #endifHHOOK g_hook3=NULL;
    HMODULE hmod=NULL;BOOL APIENTRY DllMain( HMODULE hModule,
                           DWORD  ul_reason_for_call,
                           LPVOID lpReserved
     )
    {
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
    hmod=hModule;
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
    break;
    }
        return TRUE;
    }#ifdef _MANAGED
    #pragma managed(pop)
    #endifLRESULT CALLBACK GetMsgProc(
    int code,
        WPARAM wParam,
        LPARAM lParam
    )
    {
    LoadLibrary(L"Winject2.dll");              //Load another dll
    return CallNextHookEx(g_hook3,code,wParam,lParam);
    }
    GHOOK3_API void SetHook()
    {
    g_hook3=SetWindowsHookEx(WH_GETMESSAGE,GetMsgProc,hmod,0);
    }
    GHOOK3_API void UnHook()
    {
    UnhookWindowsHookEx(g_hook3);
    }
    运行A.exe时候出现下面错误。查了很长时间也没搞定。
      

  6.   

    LoadLibrary(L"Winject2.dll"); 放的位置对不?
    还是应该在DLL_PROCESS_ATTACH:中加载?
      

  7.   

    还是出现6楼那个错误。
    源码很简单在这里:http://download.csdn.net/source/1605412
      

  8.   

    http://hi.baidu.com/muhuohacker/blog/item/834241444f33f88bb2b7dcd5.html
      

  9.   

    远程注入我是知道的。就是用Hook注入的方法我搞不定。