通过在B.dll中设置全局钩子,用A.exe将其注入到所有进程中。A.exe退出的时候所有进程中的B.dll都退出了。
我想让A.exe退出的时候,其他进程中的B.dll仍然保留该怎么做?
在网上找了说;考虑 使用 一个 DLL 钩子调用 另一个 DLL 实现完全注入。
想了半天还是不知道具体怎么搞。
我想让A.exe退出的时候,其他进程中的B.dll仍然保留该怎么做?
在网上找了说;考虑 使用 一个 DLL 钩子调用 另一个 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时候出现下面错误。查了很长时间也没搞定。
还是应该在DLL_PROCESS_ATTACH:中加载?
源码很简单在这里:http://download.csdn.net/source/1605412