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附