HOOK注入如何让另一个程序显示DLL里面的一个对话框?

jpinglove 2007-11-08 01:08:18
首先,为了能说得更清楚,我先举个例子!!
游戏外挂大家都知道吧!大家也都见过吧!!
我的程序就类似那样的一个效果.

就是我说我在我的DLL里同创建了一个对话框资源,我想在我的程序里放一个按钮,当单击这个按钮时,我的程序执行一个HOOK注入到另一个程序,并能在那个程序窗口上弹出一个非模态的对话框!

我用的标准的MFC DLL.

我在DLL里创建了一个对话框,并创建了一个类,而DLL里本身又有一个CHookApp这个类!

我在这个类里定义一个CWnd变量用来装目标窗口类,并用安装HOOK时传进来 的一个HWND窗口句柄,调用CWnd::FromHandl()函数对这个CWnd赋值,然后就是创建对话框!

代码如下:


void CHookApp::classTest()//自定义的函数
{
myCwnd = CWnd::FromHandle(wnd);//对我自定义的CWnd变量赋值
TestDlg *my = new TestDlg();//这个就是那个对话框类
my->Create(MAKEINTRESOURCE(IDD_TestDIALOG1),myCwnd);//创建
my->ShowWindow(true};//显示
}

可是这样做当执行时会弹出一个错误提示(就是那个红X,有"终止","重试","忽略")的提示框,然后目标程序就退出了!
不知道我错在哪里了!
还有,就是MAKEINTRESOURCE(IDD_TestDIALOG1)这块,如果我直接用资源ID就报错,编译都通不过!




后来我用这样的代码试还是一样的效果!
void CHookApp::classTest()//自定义的函数
{
myCwnd = CWnd::FromHandle(wnd);//对我自定义的CWnd变量赋值
myCwnd->MessageBox("aaaa",0,0);
}

不知道为什么?请各位帮忙!
...全文
146 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jpinglove 2007-12-02
  • 打赏
  • 举报
回复
谢谢
KeSummer 2007-11-08
  • 打赏
  • 举报
回复
CWnd变量是从另外个进程传过来的吗?如果是的话,当然不行了.进程间是隔离的.

如果不是请参考下以下步骤:
1:在函数头加上AFX_MANAGE_STATE(AfxGetStaticModuleState());
2:自己新起UI线程,UI线程里出界面
3:调试!
在myCwnd = CWnd::FromHandle(wnd);//对我自定义的CWnd变量赋值
下断,然后把调试器附加到要注入的进程上,再运行注入程序对目标进程进行注入,我调试注入代码都是这样做的.非常方便.

我也做过这样的程序,程序是一个网吧管理程序,客户端是个注入带winlogon的dll,会显示一个界面给用户上下机操作的.也是MFC DLL.
lzh1160 2007-11-08
  • 打赏
  • 举报
回复
我也学习紧..up up

15,471

社区成员

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

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