当前位置: 代码迷 >> 汇编语言 >> 郁金香远程加血有关问题
  详细解决方案

郁金香远程加血有关问题

热度:7066   发布时间:2013-02-26 00:00:00.0
郁金香远程加血问题
系统win764位、MFC应用程序、VS2010
----加血--------  
  HWND h; //窗口变量
 h=::FindWindow(NULL,"BloodGame"); //查找窗口句柄需要全局标识符
 DWORD id; //进程ID
 LPDWORD Pid=&id; //定义临时变量方便调用
 ::GetWindowThreadProcessId(h,Pid); //取得指定窗口的进程ID 存放到变量id里边
 HANDLE hp=OpenProcess(PROCESS_ALL_ACCESS,false,id);//获取访问进程权限 存放至hp
  DWORD tid; //定义临时变量方便调用
 CreateRemoteThread(hp,NULL,0,(LPTHREAD_START_ROUTINE)0x413440 ,NULL,0,&tid);
  ----结束加血----


自己写的客户端----加血------
void CBloodGameDlg::OnBnClickedButtonAdd()
{
 // TODO: 在此添加控件通知处理程序代码
 
blood += 22; 
char buffer[10];
 _itoa( blood, buffer, 10 );
 m_blood.SetWindowText(buffer);
}
------结束----------


远程加血之后执行到 m_blood.SetWindowText(buffer);时临时变量值为
this 0x00000000{CBloodGameDlg hWnd=???}
buffer 0x0273ff68 "3044"

然后执行到void CWnd::SetWindowText(LPCTSTR lpszString)
{
 ENSURE(this);
 ENSURE(::IsWindow(m_hWnd) || (m_pCtrlSite != NULL));

 if (m_pCtrlSite == NULL)
 ::SetWindowText(m_hWnd, lpszString);
 else
 m_pCtrlSite->SetWindowText(lpszString);
}
到ENSURE(this);时临时变量值
this 0x000000bc{CWnd hWnd=???}
lpszString 0x0273ff68"3044"
接着执行出现错误:BloodGame.exe 中的 0x5828f363 (mfc100d.dll) 处有未经处理的异常: 0xC0000005: 读取位置 0x000000dc 时发生访问冲突
这个应该怎么解决呢?this指针的值怎么不知道呢?

------解决方案--------------------------------------------------------
m_blood.SetWindowText(buffer);

改成

::SetDlgItemInt(::FindWindow(NULL,"BloodGame"), ID自己查resource.h文件, blood, FALSE);

这就不会错了
  相关解决方案