代码
long setSunMoney()
{
DWORD pId;
HWND myWnd,gameWnd;
gameWnd = FindWindow(NULL,_T( " 植物大战僵尸中文版 " ));
myWnd = FindWindow(NULL,_T( " 植物大战僵尸外挂 " ));
DWORD sun,money;
sun = (DWORD)GetDlgItemInt(myWnd,IDC_EDIT_SUN,NULL,FALSE);
money = (DWORD)GetDlgItemInt(myWnd,IDC_EDIT_MONEY,NULL,FALSE);
if (gameWnd == NULL)
{
// MessageBox(myWnd,_T("没有找到游戏!"),_T("Game"),MB_OK);
return FALSE;
}
GetWindowThreadProcessId(gameWnd, & pId);
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,pId);
LPVOID lpOneBaseAddress = (LPVOID) 0x006a9ec0 ;
DWORD dwOne;
ReadProcessMemory(
hProcess ,
lpOneBaseAddress,
(LPVOID) & dwOne,
sizeof (DWORD),
0
);
LPVOID lpTwoBaseAddress = (LPVOID)(dwOne + 0x768 );
DWORD dwTwo;
ReadProcessMemory(
hProcess ,
lpTwoBaseAddress,
(LPVOID) & dwTwo,
sizeof (DWORD),
0
);
LPVOID lpTrueHPAddress = (LPVOID)(dwTwo + 0x5560 );
/* DWORD dwHP;
ReadProcessMemory(
hProcess ,
lpTrueHPAddress,
(LPVOID)&dwHP,
sizeof(DWORD),
0
); */
WriteProcessMemory(
hProcess,
lpTrueHPAddress,
(LPVOID) & sun,
sizeof (DWORD),
0
);
LPVOID lpOneMoney = (LPVOID) 0x006a9ec0 ;
DWORD lpOneInfo;
ReadProcessMemory(hProcess,lpOneMoney,(LPVOID) & lpOneInfo, sizeof (DWORD), 0 );
LPVOID lpTwoMoney = (LPVOID)(lpOneInfo + 0x82c );
DWORD lpTwoInfo;
ReadProcessMemory(hProcess,lpTwoMoney,(LPVOID) & lpTwoInfo, sizeof (DWORD), 0 );
LPVOID lpThreeMoney = (LPVOID)(lpTwoInfo + 0x28 );
/* DWORD lpThreeInfo;
ReadProcessMemory(hProcess,lpThreeMoney,(LPVOID)&lpThreeInfo,sizeof(DWORD),0); */
// DWORD money=0xea60;
WriteProcessMemory(
hProcess, // HANDLE hProcess,
(LPVOID)lpThreeMoney, // LPVOID lpBaseAddress,
(LPVOID) & money , // LPVOID lpBuffer,
sizeof (DWORD), // DWORD nSize,
0 // LPDWORD lpNumberOfBytesWritten
);
return TRUE;
}
long setSunMoney()
{
DWORD pId;
HWND myWnd,gameWnd;
gameWnd = FindWindow(NULL,_T( " 植物大战僵尸中文版 " ));
myWnd = FindWindow(NULL,_T( " 植物大战僵尸外挂 " ));
DWORD sun,money;
sun = (DWORD)GetDlgItemInt(myWnd,IDC_EDIT_SUN,NULL,FALSE);
money = (DWORD)GetDlgItemInt(myWnd,IDC_EDIT_MONEY,NULL,FALSE);
if (gameWnd == NULL)
{
// MessageBox(myWnd,_T("没有找到游戏!"),_T("Game"),MB_OK);
return FALSE;
}
GetWindowThreadProcessId(gameWnd, & pId);
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,pId);
LPVOID lpOneBaseAddress = (LPVOID) 0x006a9ec0 ;
DWORD dwOne;
ReadProcessMemory(
hProcess ,
lpOneBaseAddress,
(LPVOID) & dwOne,
sizeof (DWORD),
0
);
LPVOID lpTwoBaseAddress = (LPVOID)(dwOne + 0x768 );
DWORD dwTwo;
ReadProcessMemory(
hProcess ,
lpTwoBaseAddress,
(LPVOID) & dwTwo,
sizeof (DWORD),
0
);
LPVOID lpTrueHPAddress = (LPVOID)(dwTwo + 0x5560 );
/* DWORD dwHP;
ReadProcessMemory(
hProcess ,
lpTrueHPAddress,
(LPVOID)&dwHP,
sizeof(DWORD),
0
); */
WriteProcessMemory(
hProcess,
lpTrueHPAddress,
(LPVOID) & sun,
sizeof (DWORD),
0
);
LPVOID lpOneMoney = (LPVOID) 0x006a9ec0 ;
DWORD lpOneInfo;
ReadProcessMemory(hProcess,lpOneMoney,(LPVOID) & lpOneInfo, sizeof (DWORD), 0 );
LPVOID lpTwoMoney = (LPVOID)(lpOneInfo + 0x82c );
DWORD lpTwoInfo;
ReadProcessMemory(hProcess,lpTwoMoney,(LPVOID) & lpTwoInfo, sizeof (DWORD), 0 );
LPVOID lpThreeMoney = (LPVOID)(lpTwoInfo + 0x28 );
/* DWORD lpThreeInfo;
ReadProcessMemory(hProcess,lpThreeMoney,(LPVOID)&lpThreeInfo,sizeof(DWORD),0); */
// DWORD money=0xea60;
WriteProcessMemory(
hProcess, // HANDLE hProcess,
(LPVOID)lpThreeMoney, // LPVOID lpBaseAddress,
(LPVOID) & money , // LPVOID lpBuffer,
sizeof (DWORD), // DWORD nSize,
0 // LPDWORD lpNumberOfBytesWritten
);
return TRUE;
}
代码
DWORD GetWindowThreadProcessId(
HWND hWnd, // handle to window
LPDWORD lpdwProcessId // process identifier
);
BOOL ReadProcessMemory(
HANDLE hProcess, // handle to the process
LPCVOID lpBaseAddress, // base of memory area
LPVOID lpBuffer, // data buffer
SIZE_T nSize, // number of bytes to read
SIZE_T * lpNumberOfBytesRead // number of bytes read
);
BOOL WriteProcessMemory(
HANDLE hProcess, // handle to process
LPVOID lpBaseAddress, // base of memory area
LPCVOID lpBuffer, // data buffer
SIZE_T nSize, // count of bytes to write
SIZE_T * lpNumberOfBytesWritten // count of bytes written
);
DWORD GetWindowThreadProcessId(
HWND hWnd, // handle to window
LPDWORD lpdwProcessId // process identifier
);
BOOL ReadProcessMemory(
HANDLE hProcess, // handle to the process
LPCVOID lpBaseAddress, // base of memory area
LPVOID lpBuffer, // data buffer
SIZE_T nSize, // number of bytes to read
SIZE_T * lpNumberOfBytesRead // number of bytes read
);
BOOL WriteProcessMemory(
HANDLE hProcess, // handle to process
LPVOID lpBaseAddress, // base of memory area
LPCVOID lpBuffer, // data buffer
SIZE_T nSize, // count of bytes to write
SIZE_T * lpNumberOfBytesWritten // count of bytes written
);