自己动手制作植物大战僵尸简单修改器
生活随笔
收集整理的這篇文章主要介紹了
自己动手制作植物大战僵尸简单修改器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
自己動手制作植物大戰僵尸簡單修改器
- 獲取植物大戰僵尸進程
- 改變陽光數
- 改變金幣數
- CD循環清零
- 運行結果
獲取植物大戰僵尸進程
我用的是植物大戰僵尸漢化第二版,基址是0x006A9EC0
編譯器是VC++6.0
(注:未經說明且不是函數定義的代碼添加于按鈕處)
聲明基址
首先是獲取植物大戰僵尸進程
PROCESSENTRY32 pe32;pe32.dwSize = sizeof(pe32);HANDLE hProcessSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);BOOL have_more = ::Process32First(hProcessSnap,&pe32);int processid = -1;while(have_more){if(!_tcscmp(pe32.szExeFile,_T("PlantsVsZombies.exe"))){processid = pe32.th32ProcessID;break;}have_more = ::Process32Next(hProcessSnap,&pe32);}if(processid == -1){AfxMessageBox("找不到游戲進程");ExitThread(-1);}CloseHandle(hProcessSnap);HANDLE hprocess = ::OpenProcess(PROCESS_ALL_ACCESS,FALSE,processid);hprocess就是植物大戰僵尸進程了
改變陽光數
接著就要改變陽光數了,陽光地址是0x006A9EC0 + 0x786 + 0x5560
(即0x006A9EC0的值加上0x786后作為地址,取值加0x5560為陽光地址,之后的不另做解釋)
改變金幣數
再其次是改變金幣數,金幣數地址是0x006A9EC0 + 0x82c+ 0x28
(注:實際金幣數為該地址的值乘上10后的結果)
CD循環清零
再接著是CD循環清零,每個格子CD地址0x006A9EC0 + 0x768+ 0x144 +(0x70+0x50i) (0<=i<10)
(注:(0x70+0x50i)表示括號內為直接運算即可)
先在構造函數處添加如下代碼
再在按鈕事件添加如下代碼
//判斷是否啟動/終止CD循環清零if(m_check1.GetCheck() == 1 && hthread == INVALID_HANDLE_VALUE){hthread = CreateThread(NULL,0,hackthread,&hprocess,0,NULL);}else if(m_check1.GetCheck() != 1 && hthread != INVALID_HANDLE_VALUE){TerminateThread(hthread,0);hthread = INVALID_HANDLE_VALUE;} DWORD _stdcall hackthread(LPVOID lpparam) {const int baseaddr = 0x006A9EC0;HANDLE hprocess = *((HANDLE*)lpparam);int value = 1;int addr;while(true){ReadProcessMemory(hprocess,(LPVOID)(baseaddr),&addr,4,0);ReadProcessMemory(hprocess,(LPVOID)(addr+0x768),&addr,4,0);ReadProcessMemory(hprocess,(LPCVOID)(addr+0x144),&addr,4,0);for(int i = 0;i < 10;i++)//利用循環每次加50,循環10次實現10個方框無冷卻{WriteProcessMemory(hprocess,(LPVOID)(addr+0x70+(0x50)*i),&value,4,0);}}return 0; }運行結果
總結
以上是生活随笔為你收集整理的自己动手制作植物大战僵尸简单修改器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机速成课 第二集 电子计算机
- 下一篇: 计算机 超频