DLL远程注入时显示对话框问题

sweetwindows 2015-09-29 09:55:28
本人最近弄了一个DLL,封装了一个游戏的一些功能,想远程注入游戏,同时显示我封装在DLL里面的界面,可是注入以后,可以用OD等工具看到模块已经注入成功,但是注入时启动的对话框窗口却是不显示,这个问题困扰了我很久,加入while(get(MSG)),然后dispatch消息,也不行,请大神指点一下,本人用的是win7 的64位操作系统,工具是VS2012.
...全文
778 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sweetwindows 2015-10-08
  • 打赏
  • 举报
回复
引用 6 楼 jacky_qiu 的回复:
用createremotethread 的方式注入dll,在dllmain函数不能安装钩子or创建窗口(我也不知道为什么,我没有成功过) 可以用 setwindowhook 来注入dll 发邮件给我,我发个例子给你 jacky_qiu@139.com
钩子的话我在win7 32上弄可以,但是win7 64的游戏上就不行,不知道咋的,10.1回家了,不好意思
lzlichun 2015-10-01
  • 打赏
  • 举报
回复
引用 6 楼 jacky_qiu 的回复:
用createremotethread 的方式注入dll,在dllmain函数不能安装钩子or创建窗口(我也不知道为什么,我没有成功过) 可以用 setwindowhook 来注入dll 发邮件给我,我发个例子给你 jacky_qiu@139.com
可以发一份给我吗?谢谢!lzlichun@126点com
jacky_qiu 2015-09-30
  • 打赏
  • 举报
回复
用createremotethread 的方式注入dll,在dllmain函数不能安装钩子or创建窗口(我也不知道为什么,我没有成功过) 可以用 setwindowhook 来注入dll 发邮件给我,我发个例子给你 jacky_qiu@139.com
zwfgdlc 2015-09-30
  • 打赏
  • 举报
回复

INT_PTR CALLBACK DialogProc(
	_In_  HWND hwndDlg,
	_In_  UINT uMsg,
	_In_  WPARAM wParam,
	_In_  LPARAM lParam)
{
	switch (uMsg)
	{
	case WM_INITDIALOG:
		return TRUE;

	case WM_COMMAND:
		if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
		{
			EndDialog(hwndDlg, 0);
		}
		if (LOWORD(wParam) == IDC_BUTTON1)
		{
			MessageBox(0, 0, 0, 0);
		}
		return TRUE;

	case WM_CLOSE:
		EndDialog(hwndDlg, 0);
		return TRUE;
	}
	return FALSE;
}

BOOL WINAPI DllMain(
	HINSTANCE hinstDLL,  // handle to DLL module
	DWORD fdwReason,     // reason for calling function
	LPVOID lpReserved)  // reserved
{
	// Perform actions based on the reason for calling.
	switch (fdwReason)
	{
	case DLL_PROCESS_ATTACH:
		// Initialize once for each new process.
		// Return FALSE to fail DLL load.T
		DialogBox(hinstDLL, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DialogProc);
		break;

	case DLL_THREAD_ATTACH:
		// Do thread-specific initialization.
		break;

	case DLL_THREAD_DETACH:
		// Do thread-specific cleanup.
		break;

	case DLL_PROCESS_DETACH:
		// Perform any necessary cleanup.
		break;
	}
	return TRUE;  // Successful DLL_PROCESS_ATTACH.
}
sweetwindows 2015-09-29
  • 打赏
  • 举报
回复
3楼的不光是注入游戏不能呼出对话框,普通的程序注入以后对话框也是显示不出来,可是在win7 32位用钩子是可以的
encoderlee 2015-09-29
  • 打赏
  • 举报
回复
先尝试注入到记事本等普通程序,看看窗口能否弹出,另外你的代码里创建窗口时也要做判断,如果创建失败,GetLastError是多少,可以通过写文件的形式保存下来,以便确定问题的原因。
xiaohuh421 2015-09-29
  • 打赏
  • 举报
回复
注入进去后, 是需要某个触发机制来弹创建窗口, 并且并显示窗口. 光是注入进去, 并不会出来界面 (不要尝试在dll的main中自动创建窗口) 以前一般的做法是dll中注册消息钩子, 按某个键的时候呼出对话框. 某些对话框需要单独开线程来显示, 否则会卡死游戏.

2,586

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 资源
社区管理员
  • 资源
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧