植物大战僵尸辅助器2

#include<iostream>
#include<windows.h>
using namespace std;
HWND hand=NULL;
DWORD pid=0;
HANDLE hProcess=NULL;
DWORD BaseValue=0;
DWORD SunshineAddress;
DWORD moneyAddress;
DWORD ZombiesAddress;
DWORD sunplantAddress;
bool startGame(){
    hand=FindWindow("MainWindow","植物大战僵尸中文版");
    cout<<hand<<endl;
    if(hand==NULL){
        cout<<"游戏没有运行";
        return false;
    }
    cout<<"窗口:"<<hand<<endl;
    GetWindowThreadProcessId(hand,&pid);
    if(pid==0){
        cout<<"无法找到植物大战僵尸进程";
        return false;
    }
    cout<<"进程:"<<pid<<endl;
    hProcess=OpenProcess(PROCESS_ALL_ACCESS,
    false,
    pid);
    if(hProcess==NULL){
        cout<<"无法打开进程"<<endl;
        return false;
    }
     cout<<"打开进程:"<<hProcess<<endl;
    DWORD BaseAddress=0x006A9EC0;
    bool Result=ReadProcessMemory(
        hProcess,
        (LPVOID)BaseAddress,
        &BaseValue,
        4,
        NULL
    );
    if(Result==false){
        cout<<"初始化基础地址失败";
        return false;
    }
    return true;
}
//初始化阳光地址--寻找真实的阳光地址
bool initSunshine(){
    DWORD _Address=BaseValue+0x768;//一级偏移地址
    DWORD _Value=0;
    bool Result=ReadProcessMemory(
    hProcess,       //读取哪一个进程
    (LPVOID)_Address,   //内存地址是多少
    &_Value,        //读取数据放哪   
    4,              //数据储存长度
    NULL            //实际读取的长度
    );
    if(Result==false){
        cout<<"初始化阳光地址失败";
        return false;
    }
    SunshineAddress=_Value+0x5560;//二级偏移地址
    return true;   
}
int getSunshineValue(){
    DWORD value=0;
    bool Result=ReadProcessMemory(hProcess,
    (LPVOID)SunshineAddress,
    &value,
    4,
    NULL
    );
    if(Result==false){
        cout<<"获得阳光数据失败";
        return 0;
    }
    cout<<"阳光数据:"<<value<<endl;
    return (int)value;
}
void setSunshineValue(int value){
    WriteProcessMemory(hProcess,(LPVOID)SunshineAddress,&value,4,NULL);
    cout<<"修改完成"<<endl;
}
  
bool initmoney(){
    DWORD _Address=BaseValue+0x82c;
    DWORD _Value=0;
    bool Result=ReadProcessMemory(
	    hProcess,     
	    (LPVOID)_Address, 
	    &_Value,       
	    4,            
	    NULL      
    );
    if(Result==false){
        cout<<"初始化金币地址失败";
        return false;
    }
    moneyAddress=_Value+0x28;
    return true;   
}
int getmoneyValue(){
    DWORD value=0;
    bool Result=ReadProcessMemory(hProcess,
    (LPVOID)moneyAddress,
    &value,
    4,
    NULL
    );
    if(Result==false){
        cout<<"获得金币数据失败";
        return 0;
    }
    cout<<"金币数据:"<<value<<endl;
    return (int)value;
}
void setmoneyValue(int value){
    WriteProcessMemory(hProcess,(LPVOID)moneyAddress,&value,4,NULL);
    cout<<"修改完成"<<endl;
}
void lengque(){
    DWORD lengque=0x00488e73;
    DWORD leng_pianyi=0x80;
    WriteProcessMemory(hProcess,(LPVOID)lengque,&leng_pianyi,1,NULL);
    cout<<"修改完成"<<endl;
}
void zanting(){
    DWORD zanting=0x4502C0;;
    DWORD zan_pianyi=0xC3;
    WriteProcessMemory(hProcess,(LPVOID)zanting,&zan_pianyi,1,NULL);
    cout<<"修改完成"<<endl;
}
bool initZombies(){
	DWORD _Address=BaseValue+0x768;
	DWORD _Value=0;
	bool Result=ReadProcessMemory(
		hProcess,
		(LPVOID)_Address,
		&_Value,		
		4,
		NULL
	);
	if(Result==false){
        cout<<"初始化僵尸地址失败";
        return false;
    }
    ZombiesAddress=_Value+0x90;
	Result=ReadProcessMemory(
		hProcess,
		(LPVOID)ZombiesAddress,
		&_Value,
		4,
		NULL
	);
    if(Result==false){
        cout<<"僵尸二次偏移失败";
        return false;
    }
    ZombiesAddress=_Value;
	cout<<"僵尸地址:"<<ZombiesAddress<<endl;
	return true; 
}
bool killZombies(){
	for(int i=-100;i<100;i++){
		DWORD _address=ZombiesAddress+0x28+i*0x15c;
		DWORD _Value=0;
		bool Result=ReadProcessMemory(
			hProcess,
			(LPVOID)_address,
			&_Value,
			4,
			NULL
		);
		if(Result==false){
	        cout<<"僵尸血量获取失败";
	        continue; 
    	}
    	int value=3;
    	if(_Value<100){
    		WriteProcessMemory(hProcess,(LPVOID)_address,&value,4,NULL);
		}
	}
	return true;
}
bool initappearsun(){
	DWORD _Address=BaseValue+0x768;
	DWORD _Value=0;
	bool Result=ReadProcessMemory(
		hProcess,
		(LPVOID)_Address,
		&_Value,		
		4,
		NULL
	);
	if(Result==false){
        cout<<"初始化阳光植物地址失败"<<endl;
        return false;
    }
    sunplantAddress=_Value+0xac;
	Result=ReadProcessMemory(
		hProcess,
		(LPVOID)sunplantAddress,
		&_Value,
		4,
		NULL
	);
    if(Result==false){
        cout<<"阳光植物二次偏移失败"<<endl;
        return false;
    }
    sunplantAddress=_Value;
	cout<<"阳光植物地址:"<<sunplantAddress<<endl;
	return true; 
}
bool appearsun(){
	for(int i=-100;i<100;i++){
		DWORD _address=sunplantAddress+0x58+i*0x14c;
		DWORD _Value=0;
		bool Result=ReadProcessMemory(
			hProcess,
			(LPVOID)_address,
			&_Value,
			4,
			NULL
		);
		if(Result==false){
	        cout<<"阳光植物地址获取失败";
	        continue; 
    	}
    	int value=0;
    	WriteProcessMemory(hProcess,(LPVOID)_address,&value,4,NULL);
	}
	return true;
}
bool big_appearsun(){
	for(int j=0;j<30;j++){
		for(int i=-100;i<100;i++){
			DWORD _address=sunplantAddress+0x58+i*0x14c;
			DWORD _Value=0;
			bool Result=ReadProcessMemory(
				hProcess,
				(LPVOID)_address,
				&_Value,
				4,
				NULL
			);
			if(Result==false){
		        cout<<"阳光植物地址获取失败";
		        continue; 
	    	}
	    	int value=0;
	    	WriteProcessMemory(hProcess,(LPVOID)_address,&value,4,NULL);
		}
		Sleep(100);
	}
	return true;
}
int main(){
    system("start C:\\Users\\Administrator\\Desktop\\植物大战僵尸1电脑版\\PlantsVsZombies.exe");
    system("title 植物大战僵尸辅助器");
    system("color 0A");
    Sleep(1000);
    bool Result=false;
    Result=startGame();
    if(Result==false){
        return 0;
    }
    int n,m;
    while(1){
        cout<<"*植物大战僵尸外挂*"<<endl;
        cout<<"1.修改阳光"<<endl;
        cout<<"2.修改金币"<<endl;
        cout<<"3.种植无冷却"<<endl;
        cout<<"4.切换窗口不暂停"<<endl;
        cout<<"5.秒杀僵尸"<<endl;
        cout<<"6.瞬间生产阳光"<<endl;
        cout<<"7.阳光植物干呕"<<endl;
        cin>>n;
        switch(n){
            case 1:{
                if(initSunshine()==true){
                    cout<<"初始化阳光地址成功"<<endl;
                }
                getSunshineValue();
                cout<<"输入修改阳光值:"<<endl;
                cin>>m;
                setSunshineValue(m);
                break;
            }
            case 2:{
                if(initmoney()==true){
                    cout<<"初始化金币地址成功"<<endl;
                }
                getmoneyValue();  
                cout<<"输入修改金币值:"<<endl;
                cin>>m;
                setmoneyValue(m);
                break;
            }
            case 3:{
                lengque();
                break;
            }
            case 4:{
                zanting();
                break;
            }
            case 5:{
                if(initZombies()){
                	killZombies();
				}
                break;
            }
            case 6:{
                if(initappearsun()){
                	appearsun();
				}
                break;
            }
            case 7:{
                if(initappearsun()){
                	big_appearsun();
				}
                break;
            }
        }
    }
    return 0;
}

  

posted @ 2023-12-23 09:32  王ys  阅读(37)  评论(0编辑  收藏  举报