如何确认那个内存地址是存放炮弹数量的?
- C/C++ code
#include <windows.h> HINSTANCE g_hInst; HWND g_hWnd; char szAppName[]="TankFix"; //The name of the exe char szTitle[]="坦克大战修改"; DWORD addr=0x004C9C84; //存放炮弹数量的内存地址 DWORD pid; //坦克大战的PID int val=1000; //炮弹要修改的数量 //------------------------------------------------------------- // WndProc- 窗口函数 //------------------------------------------------------------- LRESULT CALLBACK WndProc(HWND hWnd,UINT message, WPARAM wParam, LPARAM lParam) { // int wmId,wmEvent; switch (message) { case WM_DESTROY: PostQuitMessage(0); break; case WM_TIMER: { HWND hw=FindWindow(NULL,"Normal-tanks"); //FindWindow()得到坦克大战程序的句柄 HANDLE hProcess; //定义坦克大战的进程句柄 if (hw!=0) { SetForegroundWindow(hw); //使我们的坦克大战设置为当前窗口 GetWindowThreadProcessId(hw,&pid); //得到游戏的PID号 hProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,pid); //打开进程PROCESS_ALL_ACCESS参数,制定进程可读可写 WriteProcessMemory(hProcess,(LPVOID)addr,&val,4,0); //向坦克大战进程内存中写入数据 } else MessageBox(g_hWnd,"游戏还没有运行吧!","提示信息",MB_OK|MB_ICONINFORMATION); } default: return (DefWindowProc(hWnd,message,wParam,lParam)); } return 0; }
[解决办法]
金山游侠 等修改内存之类的作弊软件都能找到.
[解决办法]
用ce 金山游侠之类的内存搜索工具
[解决办法]
改变值后多读几次ReadProcessMemory,确实是那个地址,然后修改WriteProcessMemory