修改游戏中呼唤出的外挂窗体名称的疑问!!!
做了个游戏外挂多开功能, 但是感觉多开的时候, 按HOME键呼唤出外挂窗体,如果外挂窗体名不和游戏窗口名相对应, 可能会搞混淆, 于是想改变外挂窗体名字
现在修改游戏窗体名字成功, 但是修改外挂窗体的名字的时候字符串就变成了空串, 百思不得其解.
char g_szBuf[MAX_PATH] = ""; //利用这个全局缓冲区来修改外挂窗体的名字
LRESULT CALLBACK KeyboardProc(int code, WPARAM wParam, LPARAM lParam)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
BOOL bKeyUp = lParam & (1<<31);
if ((VK_HOME == wParam) && bKeyUp && code == HC_ACTION)
{
if (NULL == g_wgDllDlg)
{
g_wgDllDlg = new CWgDllDlg;
g_wgDllDlg->Create(IDD_WG_DLL_DLG, NULL);
AfxMessageBox(g_szBuf); //这里g_szBuf又变成了"";
g_wgDllDlg->SetWindowText(g_szBuf);
g_wgDllDlg->ShowWindow(SW_SHOWNORMAL);
}
else
{
if (g_wgDllDlg->IsWindowVisible())
g_wgDllDlg->ShowWindow(SW_HIDE);
else
g_wgDllDlg->ShowWindow(SW_SHOW);
}
}
return CallNextHookEx(g_hHook, code, wParam, lParam);
}
BOOL SetHook(char szBuf[MAX_PATH])
{
if (NULL != g_hHook)
return FALSE;
strcpy(g_szBuf, szBuf); //这里赋值给g_szBuf, g_szBuf的值变成想要的串, 比如说123
AfxMessageBox(g_szBuf);
g_hGameWnd = FindWindow(NULL, __T("Element Client"));
if (NULL == g_hGameWnd)
return FALSE;
DWORD dwGamePid = 0;
DWORD dwGameTid = 0;
dwGameTid = GetWindowThreadProcessId(g_hGameWnd, &dwGamePid);
//如果传递的是null, 那么这里获得的是exe的句柄, 可以用GetModuleFileName来验证
HMODULE hModule = GetModuleHandle(__T("WgDll.dll"));
//注意最后一个参数是thread id而不是process id
g_hHook = SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, hModule, dwGameTid);
if (NULL == g_hHook)
{
return FALSE;
}
else
{
SetWindowText(g_hGameWnd, szBuf);
return TRUE;
}
还请大家多多指教, 不胜感激.
我是用MessageBox来调试, 看这个串的值的, 大家还有没有别的方法可以看看这个串的值???
[课程]Android-CTF解题方法汇总!