鱼C论坛

 找回密码
 立即注册
查看: 2634|回复: 2

c语言WG

[复制链接]
发表于 2013-10-5 07:51:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>
#include <windows.h>
void main(void)
{
char Command; HWND hWnd;
DWORD Pid; HANDLE hProcess=0; while(1)
{
printf("———————————植物大战僵尸2 游戏WG——————————\n");
printf(" 打开WG O 修改金钱 M \n");
printf(" 修改血量 H 退出WG E \n");
printf("———————————------------------——————————\n");
Command=getchar();
getchar();
if (Command =='E'||Command =='e')
{
break;
}
else
{
if (Command=='O'||Command=='o')
{
hWnd=FindWindow(NULL,"植物大战僵尸中文版");
if (hWnd!=0)
{
GetWindowThreadProcessId(hWnd,&Pid);
hProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,Pid);
if (hProcess==0)
{
printf("\n打开游戏进程失败\n");
}
else
{
printf("\n成功打开游戏进程\n");
}
}
}
if (Command=='M'||Command=='m')
{
if (hProcess==0)
{
printf("\n请先打开WG\n");
}
else
{
DWORD Money; DWORD Addr=;
printf("\n您想多少钱?:");
scanf("%ld",&Money); DWORD res=WriteProcessMemory(hProcess,(LPVOID)Addr,&Money,4,0);
if (res==0)
{
printf("\n修改失败\n");
}
else
{
printf("\n修改成功\n");
}
}
}
if (Command=='H'||Command=='h')
{
if (hProcess==0)
{
printf("\n请先打开WG\n");
}
else
{
DWORD HP; DWORD Addr=0x005b85cc;
printf("\n您想多少血?:");
scanf("%ld",&HP); DWORD res=WriteProcessMemory(hProcess,(LPVOID)Addr,&HP,4,0);
if (res==0)
{
printf("\n修改失败\n");
}
else
{
printf("\n修改成功\n");

((((DWORD Money; DWORD Addr=;
printf("\n您想多少钱?:");
scanf("%ld",&Money); DWORD res=WriteProcessMemory(hProcess,(LPVOID)Addr,&Money,4,0);))))

怎么理解??????,不会啊,写程序的时候出错基址怎样往上面写啊?

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-8-6 19:43:39 | 显示全部楼层
#include <stdio.h>
#include <windows.h>
#include <stdlib.h>

void ModifyResult(bool b)
{
        if (b)
        {
                printf("修改成功\n");

        }else{
                printf("修改失败\n");
        }

}

void DisplaySun()
{
        HWND gameh = ::FindWindow(NULL,"植物大战僵尸中文版");//句柄
        int sun = 0;
       
        DWORD processid;
        ::GetWindowThreadProcessId(gameh,&processid);
        HANDLE processh = :: OpenProcess(PROCESS_ALL_ACCESS,false,processid);       
        DWORD byread;
        LPCVOID pbase = (LPCVOID)6987456;
        LPVOID rbuffer = (LPVOID)&sun;
        ::ReadProcessMemory(processh,pbase,rbuffer,4,&byread);
       
        pbase = (LPCVOID)(sun + 1896);
       
        ::ReadProcessMemory(processh,pbase,rbuffer,4,&byread);
       
        pbase = (LPCVOID)(sun + 21856);
       
        ::ReadProcessMemory(processh,pbase,rbuffer,4,&byread);
        printf("您当前阳光为:%d\n",sun);

}
BOOL ModifySun(int wsun)
{
        HWND gameh = ::FindWindow(NULL,"植物大战僵尸中文版");//句柄
        int sun = 0;
       
        DWORD processid;
        ::GetWindowThreadProcessId(gameh,&processid);
        HANDLE processh = :: OpenProcess(PROCESS_ALL_ACCESS,false,processid);       
        DWORD byread;
        LPCVOID pbase = (LPCVOID)6987456;
        LPVOID rbuffer = (LPVOID)&sun;
        ::ReadProcessMemory(processh,pbase,rbuffer,4,&byread);
       
        pbase = (LPCVOID)(sun + 1896);
       
        ::ReadProcessMemory(processh,pbase,rbuffer,4,&byread);
       
        pbase = (LPCVOID)(sun + 21856);
       
        ::ReadProcessMemory(processh,pbase,rbuffer,4,&byread);
//        printf("阳光:%d\n",sun);
       
       
        //int wsun = 10000;
        DWORD bywrite;
        LPVOID wbuffer = (LPVOID)&wsun;
       
        BOOL result = ::WriteProcessMemory(processh,(LPVOID)pbase,wbuffer,4,&bywrite);

        return result;
}

void DisplayMoney()
{       
        HWND gameh = ::FindWindow(NULL,"植物大战僵尸中文版");//句柄
        int money = 0;

        DWORD processid;
        ::GetWindowThreadProcessId(gameh,&processid);
        HANDLE processh = :: OpenProcess(PROCESS_ALL_ACCESS,false,processid);       
        DWORD byread;


        LPCVOID pbase = (LPCVOID)6987456;
        LPVOID        rbuffer = (LPVOID)&money;
        ::ReadProcessMemory(processh,pbase,rbuffer,4,&byread);

        pbase = (LPCVOID)(money + 2092);

        ::ReadProcessMemory(processh,pbase,rbuffer,4,&byread);

        pbase = (LPCVOID)(money + 40);

        ::ReadProcessMemory(processh,pbase,rbuffer,4,&byread);

                printf("您当前金币:%d\n",money*10);

}

BOOL ModifyMoney(int wmoney)
{
        HWND gameh = ::FindWindow(NULL,"植物大战僵尸中文版");//句柄
        int money = 0;

        DWORD processid;
        ::GetWindowThreadProcessId(gameh,&processid);
        HANDLE processh = :: OpenProcess(PROCESS_ALL_ACCESS,false,processid);       
        DWORD byread;
       

        LPCVOID pbase = (LPCVOID)6987456;
        LPVOID        rbuffer = (LPVOID)&money;
        ::ReadProcessMemory(processh,pbase,rbuffer,4,&byread);
       
        pbase = (LPCVOID)(money + 2092);
       
        ::ReadProcessMemory(processh,pbase,rbuffer,4,&byread);
       
        pbase = (LPCVOID)(money + 40);
       
        ::ReadProcessMemory(processh,pbase,rbuffer,4,&byread);
       
//        printf("您当前金币:%d\n",money*10);
       
        DWORD bywrite;
        wmoney = wmoney / 10;
       
        LPVOID mbuffer = (LPVOID)&wmoney;
       
        BOOL result = ::WriteProcessMemory(processh,(LPVOID)pbase,mbuffer,4,&bywrite);
        return result;
}

void MainMenu()
{

        printf("====菜单====\n");
        printf("1、修改阳光\n");
        printf("2、修改金币\n");
        printf("3、退出WG\n");
        printf("============\n");

}


void main()
{
        HWND gameh = ::FindWindow(NULL,"植物大战僵尸中文版");//句柄
        RECT r;
        POINT p;
       
        ::GetWindowRect(gameh,&r);
        printf("游戏信息:%d",r.left);
       
        printf("  %d\n",r.top);
       
        ::GetCursorPos(&p);
        printf("鼠标信息:%d  %d\n",p.x,p.y);

        if (gameh == NULL)
        {
                printf("请先运行游戏,再打开WG");
                Sleep(3000);
                return;
       
        }
        /*
        ::SetCursorPos(r.left + 540,r.top + 145);
       
        ::Sleep(50);
       
       
        mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
        mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);

        ::SetCursorPos(p.x,p.y);*/
        int op = 0;

        while (1)
        {

                MainMenu();
                scanf("%d",&op);
                int temp = 0;
               
                switch (op)
                {
                case 1:
                        DisplaySun();
                        printf("请输入阳光的修改值\n");
                        scanf("%d",&temp);
                        ModifyResult(ModifySun(temp));
                        temp = 0;
                        break;
                case 2:
                        DisplayMoney();
                        printf("请输入金币的修改值\n");
                        scanf("%d",&temp);
                    ModifyResult(ModifyMoney(temp));
                        temp = 0;
                        break;
                default:
                        temp = 0;
                        printf("三秒退出程序\n");
                        Sleep(3000);
                        printf("Bye\n");
                        return;
                        break;
               
               
                }
        }

}


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-6 19:44:14 | 显示全部楼层
我写的:lol:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-29 14:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表