Hook注入DLL到进程的问题
我按照网上的方法把一个DLL注入到一个进程里,以来截获Send,Recv等消息
比如A.exe是我的程序。主要用来把Hook.dll注入到另外的一个进程c.exe(这个程序不是做的),如果不关A.exe,那能截获到c.exe的这些消息,如果把A.exe关掉。就不能截获到了
请问是怎么回事呢?
我A.exe里的注入代码如下:
STARTUPINFO startup;
ZeroMemory( &startup, sizeof(startup) );
startup.dwFlags = STARTF_USESHOWWINDOW;
startup.wShowWindow = SW_SHOW;
startup.cb = sizeof(startup);
PROCESS_INFORMATION info;
if (CreateProcess( "d:\\abc\\c.exe ",NULL,NULL,NULL,TRUE,0,NULL,NULL,&startup,&info) == 0)
return FALSE;
Sleep(3000);
HINSTANCE hdll;
hdll = LoadLibrary( "Hook.dll ");
if(hdll == NULL)
MessageBox( "LoadLibrary ");
typedef BOOL (_stdcall *InstallHook)(DWORD dwThreadId);
InstallHook Set ;
Set = (InstallHook)GetProcAddress(hdll, "InstallHook ");
if (!Set(info.dwThreadId))
{
MessageBox( "InstallHook Error ");
}
请问有什么问题吗?
[解决办法]
让c.exe执行这些注入代码不就可以了吗?自己注入自己,呵呵
详情请参考:http://pgy12345.googlepages.com/inject
[解决办法]
在你的HookProc里面做如下的操作就能解决你的问题:
LoadLibrary( "Hook.dll "); //增加dll引用记数
UnhookWindowsHookEx(glhHook); //卸栽当前钩子
glhHook = SetWindowsHookEx(WH_GETMESSAGE, HookProc, AfxGetInstanceHandle(), dwThreadId); //重新挂接钩子