1.添加一个编辑框、一个静态文本和一个按钮,修改相应的Caption
2.修改编辑框ID为IDC_Memory,按钮ID为IDC_Buttom_EDITMemory,并添加变量
4.为了实时的显示,我们添加定时器
在OnInitDialog窗口初始化函数中添加
SetTimer(1,100,NULL);
5.类向导:Ctrl+Shift+X
switch (nIDEvent)
{
case 1:
HANDLE hp = GetGameProcessHanlde();
DWORD buf = 0,byread,bywrite;
ReadProcessMemory(hp, (PVOID)0x6a9ec0, &buf, sizeof(buf), &byread);
ReadProcessMemory(hp, (PVOID)(buf + 0x82c), &buf, sizeof(buf), &byread);
ReadProcessMemory(hp, (PVOID)(buf + 0x28), &buf, sizeof(buf), &byread);
m_u_memory = buf;
UpdateData(FALSE);
break;
}
UpdateData(true);//更新窗口状态至变量
UCHAR buf[2];
DWORD bywrite;
HANDLE hp = GetGameProcessHanlde();
if (hp == NULL)
{
::MessageBox(0, L"打开进程出错", 0, MB_OK);
return;
}
//读取数据
if (m_b_cd)
{
//禁用掉冷却时间
buf[0] = 0x90;
buf[1] = 0x90;
}
else
{
//启用冷却时间
buf[0] = 0x7e;
buf[1] = 0x14;
}
//把buf内的数据写入 0x0487296
WriteProcessMemory(hp, (LPVOID)0x0487296, buf, sizeof(buf), &bywrite);
CloseHandle(hp);
HANDLE GetGameProcessHanlde()
{
HWND h = ::FindWindow(NULL, L"植物大战僵尸中文版");
if (h == 0)
{
::MessageBox(0, L"游戏未打开", 0, MB_OK);
return NULL;
}
//1005194
DWORD pid, bywrite;
GetWindowThreadProcessId(h, &pid);
//GetWindowThreadProcessId
//OpenProcss
//EnableDebugPriv();//提升进程权限 VS2008以后的版本才需要
HANDLE hp = OpenProcess(PROCESS_ALL_ACCESS, false, pid);
//
return hp;
}
6.在编辑框下添加函数
KillTimer(1);
7.双击按钮,生成按钮按下函数 SetTimer(1, 1000, NULL);
HANDLE hp = GetGameProcessHanlde();
DWORD buf = 0, byread, bywrite;
ReadProcessMemory(hp, (PVOID)0x6a9ec0, &buf, sizeof(buf), &byread);
ReadProcessMemory(hp, (PVOID)(buf + 0x82c), &buf, sizeof(buf), &byread);
UpdateData(true);
WriteProcessMemory(hp, (PVOID)(buf + 0x28), &m_u_memory, sizeof(buf), &byread);
附件:附h附t附tp附:附/附/do附附wnl附oad附.csdn.附net/附附deta附附附il附/附e附附xpenf/8附592附25附