首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

Hook注入DLL到进程的有关问题

2012-01-21 
Hook注入DLL到进程的问题我按照网上的方法把一个DLL注入到一个进程里,以来截获Send,Recv等消息比如A.exe是

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); //重新挂接钩子

热点排行