植物大战僵尸辅助器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; }