植物大戰殭屍-雜交版-修改陽光
C語言版
連結: https://caiyun.139.com/m/i?014MccuLAnI50
提取碼:jL0r
遊戲下載:
https://www.cnblogs.com/harlanlu/p/18223442
#include <windows.h>
#include <stdio.h>
#include <pthread.h>
/*
顏色函式SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),前景色 | 背景色 | 前景加強 | 背景加強);
前景色:數字0-15 或 FOREGROUND_XXX 表示 (其中XXX可用BLUE、RED、GREEN表示)
前景加強:數字8 或 FOREGROUND_INTENSITY 表示
背景色:數字16 32 64 或 BACKGROUND_XXX 三種顏色表示
背景加強: 數字128 或 BACKGROUND_INTENSITY 表示
主要應用:改變指定區域字型與背景的顏色
前景顏色對應值:
0=黑色 8=灰色
1=藍色 9=淡藍色 十六進位制
2=綠色 10=淡綠色 0xa
3=湖藍色 11=淡淺綠色 0xb
4=紅色 12=淡紅色 0xc
5=紫色 13=淡紫色 0xd
6=黃色 14=淡黃色 0xe
7=白色 15=亮白色 0xf
也可以把這些值設定成常量。
*/
void color(short x) //自定義函根據引數改變顏色
{
if(x>=0 && x<=15)//引數在0-15的範圍顏色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), x); //只有一個引數,改變字型顏色
else//預設的顏色白色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
}
int main()
{
HWND hwnd = FindWindow(NULL, "植物大戰殭屍雜交版v2.0.88"); //找到視窗
if(hwnd == 0)
{
printf("獲取控制代碼失敗,請先開啟遊戲\n");
system("pause");
return -1;
}
DWORD dwPID = 0;
GetWindowThreadProcessId(hwnd, &dwPID); //獲取程序標識
if (dwPID == 0)
{
printf("獲取PID失敗,請先開啟遊戲\n");
system("pause");
return -1;
}
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, 0, dwPID);
if (hProcess == NULL)
{
printf("程序開啟失敗,請先開啟遊戲\n");
system("pause");
return -1;
}
DWORD dwSize = 0;
int modifySunshine;
while(1){
DWORD SunShineBaseAddress = 0x006A9EC0; //基址
DWORD SunShineBaseAddressValue = 0; //基址值
if (0 == ReadProcessMemory(hProcess, (LPVOID)SunShineBaseAddress, &SunShineBaseAddressValue, sizeof(DWORD), &dwSize))
{
printf("靜態址獲取失敗\n");
system("pause");
return -1;
}
DWORD SunShineOffsetFirst = 0x768; //一級偏移
DWORD SunShineOffsetFirstValue = 0; //一級偏移值
if (0 == ReadProcessMemory(hProcess, (LPVOID)(SunShineBaseAddressValue + SunShineOffsetFirst), &SunShineOffsetFirstValue, sizeof(DWORD), &dwSize))
{
printf("一級偏移獲取失敗,請先進入植物種植介面\n");
system("pause");
return -1;
}
DWORD SunShineOffsetSecond = 0x5560; //二級偏移
DWORD SunShineNum=0; //二級偏移值,即陽光數量
if (0 == ReadProcessMemory(hProcess, (LPVOID)(SunShineOffsetFirstValue + SunShineOffsetSecond), &SunShineNum, sizeof(DWORD), &dwSize))
{
printf("二級偏移獲取失敗,請先進入植物種植介面\n");
system("pause");
return -1;
}
printf("初始陽光值:%d\n", SunShineNum);
color(11);
printf("\n請輸入陽光的修改值:");
scanf("%d", &modifySunshine);
color(16);
WriteProcessMemory(hProcess, (LPVOID)(SunShineOffsetFirstValue + SunShineOffsetSecond), &modifySunshine, sizeof(DWORD), &dwSize);
printf("\n修改成功!\n");
}
// printf("修改成功!");
CloseHandle(hProcess);
return 0;
}