植物大战僵尸C语言修改器

PvZ_modifier

一个自己研究了一段时间写的C语言修改器,代码规范严谨,但仍有不足,希望有能力的人和我一同研究。使用的ide是devcpp

本修改器也在github上开源,地址为:https://github.com/Liushui-Miaomiao/PvZ_modifier.git.

文件主体内容

一共5个.c源文件,一个.h头文件
c源文件名为:PvZ_modifier.c,g_op.c,g_msg.c,p_op.c,pm_op.c
h头文件名为:headgr.h

功能

修改器一览

第二页

修改效果

效果

全代码展示

PvZ_modifier.c

#include "headgr.h"

DWORD Pid;
HANDLE hProcess=0;
int command;

BOOL isRun=FALSE;
BOOL backStageRun=FALSE;
BOOL anyPosition=FALSE;
BOOL isLittle=FALSE; 

/*主函数*/
int main(void){
   
	initModifier();
	
	while(TRUE){
   
		menu();
		setColor(14);
		
		printf("\n请按下按键选择选项:");
		command=getchar();
		Choice();
	}
	
	return 0;
}

g_op.c

/*Game Operation*/

#include "headgr.h"

extern DWORD Pid;
extern HANDLE hProcess;
extern int command;

extern BOOL isRun;
extern BOOL backStageRun;
extern BOOL anyPosition;
extern BOOL isLittle; 

/*初始化修改器*/
void initModifier(void){
   
	SetConsoleTitle("【植物大战僵尸】 C语言修改器 v0.22");
	isRun=openGameProcess();
}

/*打开游戏进程*/
BOOL openGameProcess(void){
   
	setColor(14);
	printf("正在打开进程...\n");
	
	//寻找进程名称并返回pid
	if(FindProcessPid(PROCESS_NAME,Pid)){
   
		showProcessName("[","]");
		printf("[Pid:%d]\n",Pid);
		
		hProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,Pid);
		
		if (hProcess!=0){
   
			setColor(10);
			showProcessName("\n成功打开游戏进程[","]!");
			printf("进程句柄:%d\n",hProcess);
			
			if(readMemory(hProcess,0x42748E,0,4)==0xFF563DE8){
   
				if(readMemory(hProcess,0x0054EBEF,0,1)==0xFF563DC3){
   
					backStageRun=TRUE;
				}
				if(readMemory(hProcess,0x0040FE30,0,1)==0xFF563D81&&readMemory(hProcess,0x00438E40,0,1)==0xFF563DEB&&readMemory(hProcess,0x0042A2D9,0,1)==0xFF563D8D){
   
					anyPosition=TRUE;
				}
				if(readMemory(hProcess,0x00523ED5,0,1)==0xFF563DEB){
   
					isLittle=TRUE;
				}
				
				return TRUE;
			}else{
   
				setColor(14);
				printf("\n不支持的游戏版本!\n");
				return FALSE;
			}
		}else{
   
			setColor(12);
			showProcessName("\n打开游戏进程[","]失败!\n");
		}
	}else{
   
		setColor(14);
		showProcessName("未找到游戏进程:","\n");
	}
	
	return FALSE;
}

/*是否已经读取游戏进程*/
BOOL openModify(void){
   
	if(hProcess==0){
   
		setColor(14);
		printf("\n请先打开修改器搜索游戏句柄!\n");
		return FALSE;
	}
	
	return TRUE;
}

/*选择流程*/
void Choice(void){
   
	//缓冲区
	int _tempValue;
	
	setColor(13);
	//根据字符判断应该执行什么流程
	switch(command){
   
		case 'O':
			isRun=openGameProcess();
			
			pause();
			break;
		#if DEBUG
			case 'T':
				if(openModify()){
   
					
				}
				break;
		#endif
		
		/*常规修改*/
		case 'a':
			if(!openModify()){
   
				pause();
				break;
			}
			
			getchar();
			setColor(14);
			printf("\n已进入【常规修改】菜单,请选择子选项:");
			command=getchar();
			setColor(13);
			switch(command){
   
				case '1':
					if(openModify()){
   
						printf("\n请输入要修改的阳光数量:");
						scanf("%d",&_tempValue);
						_tempValue=limit(_tempValue,0,9990);
						cheatMsg(writeMemory(hProcess,0x006A9EC0,2,_tempValue,4,0x768,0x5560),"阳光");
					}
					break;
				case '2':
					if(openModify()){
   
						printf("\n请输入要修改的金钱数量:");
						scanf("%d",&_tempValue);
						_tempValue=limit(_tempValue,0,99999);
						cheatMsg(writeMemory(hProcess,0x006A9EC0,2,_tempValue,4,0x82C,0x28),"金钱");
					}
					break;
				case '3':
					if(openModify())cheatMsg(writeMemory(hProcess,0x00487296,0,0x1477,2),"卡牌无冷却");
					break;
				case '4':
					if(openModify()
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值