首页
社区
课程
招聘
[求助]关于远程线程注入DLL后DLL中安装HOOK的问题
发表于: 2013-11-9 22:35 7100

[求助]关于远程线程注入DLL后DLL中安装HOOK的问题

2013-11-9 22:35
7100
DLL InitInstance() 中创建个线程用于创建DLL窗口 并在线程中 设置HOOK 用于显示 隐藏DLL窗口下面是代码

BOOL CDLLApp::InitInstance()
{
	CWinApp::InitInstance();
::CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)CreatedllWindow,this,NULL,NULL);//创建窗口线程
	return TRUE;
}

UINT  CreatedllWindow(LPVOID lpParam)
{
	AFX_MANAGE_STATE(AfxGetStaticModuleState());

CDLLApp *p = (CDLLApp *)lpParam;
	pMixSet = new CDIASMIX();
	pMixSet->Create(IDD_DLG_SMix);			//创键窗口
	pMixSet->ShowWindow(Ture);
	
	HHOOK abc;
	DWORD tid=::GetWindowThreadProcessId(pSZMdata->gHwnd,NULL); //pSZMdata->gHwnd 为被注入的进程窗口句柄
	abc=SetWindowsHookEx(WH_GETMESSAGE,KeyboardProc,theApp.m_hInstance,tid);	 //设置hook
	if (abc==NULL)
	{
		AfxMessageBox("Hook失败");
	}
	else
	{
		AfxMessageBox("Hook成功");
	}
	MSG msg; 
	while(GetMessage(&msg,NULL,0,0)) 
	{ 
		if(GameHwnd== 0 ||!IsDialogMessage(GameHwnd,&msg) ) 
		{ 
			TranslateMessage(&msg); 
			DispatchMessage(&msg); 
		} 
	} 

return 0;
}

KeyboardProc 回调函数 我就不贴了 就是判断窗口是隐藏就显示 是显示就隐藏
DLL 是通过另一个EXE程序远程注入到宿主进程当中的。
程序一运行到SetWindowsHookEx 的时候就一直重复注入DLL 到进程里。。 我想单个的HOOK 宿主进程的窗口 明显上面方法不行。求指导该SetWindowsHookEx该怎么写才能实现这功能。或者其他方法也行只要实现按键盘某个键 显示或者隐藏DLL窗口。

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 43
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
重复注入是因为 SetWindowsHookEX参数三加入了DLL模块句柄

改为SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,GetModuleHandle(NULL),tid);
后Hook成功 可消息拦截不下来 求大神们指导下改怎样实现这功能?
2013-11-9 23:56
0
雪    币: 43
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
晕死 搞了半天原来是pSZMdata->gHwnd 获取错了。 句柄错了既然也能给HOOk 到 无语。
2013-11-10 01:20
0
雪    币: 14
活跃值: (88)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
昨晚楼主通宵改码?
2013-11-10 09:13
0
游客
登录 | 注册 方可回帖
返回
//