我的世界 (外挂)

#include <iostream>
#include <windows.h> 
using namespace std;
/*声明变量 */
HWND hand=NULL; //游戏窗口
DWORD pid=0;//游戏进程ID
HANDLE hProcess=NULL;//进程对象 
DWORD BaseValue=0;//游戏数据存放的基础值 

DWORD SunshineAddress;//阳光内存变量名称(地址) 

/*声明方法/函数 */
bool startGame(); //初始化游戏数据 
//初始化阳光地址--寻找真实的阳光地址 
bool initSunshine();
//获取阳光值 
int getSunshineValue();
//设置阳光值 
void setSunshineValue(int value);
void noCoolDown();

int main(int argc, char** argv) {
    system("title * 植物大战僵尸外挂");
    system("color 0A");
    bool Result=false; 
    Result=startGame();
    if(Result==false){
        //启动它
        //system("calc");
        system("C:\\Users\\Administrator\\Desktop\\植物大战僵尸1电脑版\\PlantsVsZombies.exe"); 
        return 0;
    }    
     initSunshine();
    setSunshineValue(10000);
    noCoolDown();
    
    
        
    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=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); 
} 
void noCoolDown(){
    cout <<"种植无冷却"<<endl; 
    //无冷却时间代码
    DWORD base = 0x00488e73;
    //打开进程 获取所有操作权限
    DWORD pianyi = 0x80;
    WriteProcessMemory(hProcess,(LPVOID)base,&pianyi,1,NULL); 
} 

 

posted @ 2023-12-15 20:03  郭立恒  阅读(195)  评论(0)    收藏  举报