#include <iostream> #include <windows.h> using namespace std; /*声明变量*/ HWND hand=NULL; DWORD pid=0; HANDLE hProcess=NULL; DWORD BaseValue=0; /*声明方法/函数 */ bool startGame(); int main(int argc, char** argv) { bool Result=false; Result=startGame(); if(Result==false){ return 0; } return 0; } 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=0x006A99EC0; //获取游戏数据的基础地址 bool Result=ReadProcessMemory( hProcess,//读取哪一个进程 (LPVOID)BaseAddress,//内存地址是多少 &BaseValue, 4,//数据存储长度 NULL//实际读取的长度 ); if(Result==false){ cout<<"初始基础地址失败"; return false; } return true; } //初始化阳光地址———寻找真实的阳光地址 bool initSunshine(){ OWORD _Address=BaseValue+0x768;//一级偏移地址 OWORD _Value=0; bool Result= ReadProcessMemory( hProcess, //读取哪一个进程 (LPVOID)_Address,//内存地址是多少 &_Value, //读取数据在哪 4, //数据存储长度 NULL //实际读取的长度 ); if(Result==false){ cout<<"初始化阳光地址失败"; return false; } SunshineAddress=_Value+0x5560; return true; } //获取阳光值 int getSunshineValue(){ //阳光内存变量的真正名称 OWORD value=0; bool Result= ReadProcessMemory( hProcess, //读取哪一个进程 (LPVOID)SunshineAddress,//阳光内存地址 &value, //读取数据在哪 4, //数据存储长度 NULL //实际读取的长度 ); if(Result==false){ cout<<"初始化阳光地址失败"; return false; } cout<<"阳光数据:"<<value<<endl; return (int)value; } //设置阳光值 void setSunshineValue(int value){ WriteProcessMemory(hProcess,(LPVOID)SunshineAddress,&value,4,NULL); }
标签:外挂,false,僵尸,大战,bool,Result,startGame From: https://www.cnblogs.com/boyeyuan/p/17908758.html