植物大战僵尸辅助C/C++版

博主在掌握C语言基础后,利用Windows API详细解析,制作了一个C语言版本的植物大战僵尸辅助工具。该工具能进行进程名获取、进程ID查找、内存读写等操作,实现了游戏内的无冷却、金币和阳光增加功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

刚学完C语言基础语法,结合windows API 详解一书
另外 易语言做过一次 就用C语言写了个控制台版本
进程名取进程ID
内存读写操作
免冷却,加金币,加阳光…懒得用CE找了,就只整了这些.

在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <TlHelp32.h>
HANDLE hProcess = 0;
DWORD Process_ID;
void NotCool();
DWORD GetPrcsIDbyName(LPCWSTR PrcsName);
DWORD Add_Func(DWORD BaseAdd,DWORD EA1,DWORD EA2,DWORD Num);
int main(void)
{	
	HWND hGame = FindWindow(NULL,L"植物大战僵尸中文版");
	system("title 植物大战僵尸辅助V1.0");
	system("mode con cols=40 lines=20");
	//printf("游戏进程ID: %d\n", GetPrcsIDbyName(L"PlantsVsZombies.exe"));
	if (hGame <= 0)
	{
		printf("未检测到游戏运行,请先运行游戏.\n");
		exit(0);
	}else
	{
		GetWindowThreadProcessId(hGame,&Process_ID);
		hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,Process_ID);
		NotCool();
		if(Add_Func(0x006AA00C,0x768,0x5560,88888))
		{
			printf("阳光充值----------> 成功\n");
		}else{printf("阳光充值----------> 失败\n");}
		if(Add_Func(0x006A9EC0,0x82c,0x28,888888))
		{
			printf("金币充值----------> 成功\n");
		}else{printf("金币充值----------> 失败\n");}
	}
	CloseHandle(hProcess);
	system("pause");
	return 0;
}
void NotCool()
{
	DWORD FLoNum = 0x1477;
	if (WriteProcessMemory(hProcess,(LPVOID)0x00487296,&FLoNum,2,NULL))
	{
		printf("废掉冷却----------> 成功\n");
	}else{printf("废掉冷却----------> 失败\n");}
}
DWORD Add_Func(DWORD BaseAdd,DWORD EA1,DWORD EA2,DWORD Num)
{
	DWORD TmpAdd=0;
	ReadProcessMemory(hProcess,(LPVOID)BaseAdd,&TmpAdd,4,NULL);//基址
	BaseAdd=TmpAdd;
	ReadProcessMemory(hProcess,(LPVOID)(TmpAdd+EA1),&TmpAdd,4,NULL);//偏移1
	EA1=TmpAdd;
	ReadProcessMemory(hProcess,(LPVOID)(TmpAdd+EA2),&TmpAdd,4,NULL);	//偏移2
	EA2=EA1+EA2;
	if(WriteProcessMemory(hProcess,(LPVOID)(EA2),&Num,4,0))
	{return 1;}
	else{return 0;}
}
DWORD GetPrcsIDbyName(LPCWSTR PrcsName)
{
	HANDLE hSnapShot; 
	PROCESSENTRY32 PE32;
	ZeroMemory(&PE32,sizeof(PE32));
	PE32.dwSize=sizeof(PE32);
	hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
	if (hSnapShot == INVALID_HANDLE_VALUE)
	{
		return 0;
	}
	if (!Process32First(hSnapShot,&PE32))
	{
		return 0;
	}
	do 
	{
		if (lstrcmpi(PE32.szExeFile,PrcsName) == 0)
		{
			CloseHandle(hSnapShot);
			return PE32.th32ProcessID;
		}
	} while (Process32Next(hSnapShot,&PE32));
	CloseHandle(hSnapShot);
	return 0;
}
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值