#include<stdio.h>#include<windows.h>void OpenSunMod(HANDLE hProcess);void OpenNoCd(HANDLE hProcess);void CloseNoCd(HANDLE hProcess);int main(void){HWND hGameWnd = FindWindow(L"MainWindow", L"植物大战僵尸中文版");if (hGameWnd == NULL){printf("没有找到游戏窗口,游戏未打开!\n");system("pause");return 0;}else{printf("已找到游戏窗口。\n");}unsigned long dwPID;GetWindowThreadProcessId(hGameWnd, &dwPID);printf("获取到进程编号:%d\n", dwPID);HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwPID);printf("获取到句柄编号:%p\n", hProcess);int FunctionNumber;printf("\n\n\n");printf("已进入外挂系统!\n");laber:printf("输入1修改阳光为9999。\n" "输入2开启卡槽无cd。\n""输入3关闭卡槽无cd。\n" "输入其他数字退出程序。\n");printf("温馨提示:本程序直接对内存进行读写操作,为避免出现不必要的错误,""请进入游戏关卡后,再使用上述功能。\n");scanf_s("%d", &FunctionNumber);switch (FunctionNumber){case 1:OpenSunMod(hProcess); break;case 2:OpenNoCd(hProcess); break;case 3:CloseNoCd(hProcess); break;default:return 0;}system("cls");switch (FunctionNumber){case 1:printf("阳光值已修改!\n"); break;case 2:printf("卡槽无cd已开启!\n"); break;case 3:printf("卡槽无cd已关闭!\n"); break;}goto laber;}void OpenSunMod(HANDLE hProcess){unsigned long SunBaseAddress = 0x6A9EC0;unsigned long SunBaseAddressData = 0;size_t dwSize = 0;ReadProcessMemory(hProcess, (void*)SunBaseAddress, &SunBaseAddressData, sizeof(unsigned long), &dwSize);unsigned long SunBaseAddress1 = SunBaseAddressData+0x768;unsigned long SunBaseAddress1Data = 0;ReadProcessMemory(hProcess, (void*)SunBaseAddress1, &SunBaseAddress1Data, sizeof(unsigned long), &dwSize);unsigned long SunBaseAddress2 = SunBaseAddress1Data + 0x5560;unsigned long SunshineValue = 9999;WriteProcessMemory(hProcess, (void*)SunBaseAddress2, &SunshineValue, sizeof(unsigned long), &dwSize);}void OpenNoCd(HANDLE hProcess){unsigned long CdBaseAddress = 0x487290;unsigned char Nocode[] = { 0x90,0x90,0x90 };size_t dwSize = 0;WriteProcessMemory(hProcess, (void*)CdBaseAddress, &Nocode, 3,&dwSize);}void CloseNoCd(HANDLE hProcess){unsigned long CdBaseAddress = 0x487290;u