欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > c/c++ >内容正文

c/c++

利用cheat engine以及VC编写游戏修改器

发布时间:2025/7/14 c/c++ 47 豆豆
生活随笔 收集整理的这篇文章主要介绍了 利用cheat engine以及VC编写游戏修改器 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

cheat engine的介绍已经完毕了,下面就是怎么使用它的问题,这里写一个稍微有意思一点的,也有实际用途的话题,就是来编写自己的游戏修改器。

这篇文章参考了http://www.pediy.com/bbshtml/bbs7/pediy7-59.htm的内容,但是进行了一定的修改和自己的实验,大家可以结合着一起看。

关于上面的链接我就不讲什么了,主要介绍我的方法。

我使用的工具

cheat engine

Visual studio 2005

目标:

红色警戒2 繁体中文版(带游侠网补丁)

 

下面就开始了,大家如果有这款游戏的话,也可以自己来试试,还是有点意思的。

使用cheat engine来辅助工作:

首先在开始工作之前,需要进行一定的准备。准备就是将游戏和cheat engine都打开,然后对于游戏,先新建一个遭遇战,选择一个“简单的敌人”,这里是因为你需要时间去找地址,如果敌人很厉害,你还没找到地址就挂了,那就没得玩了,当然,这里找地址还是很快的。

注意点有几点,在flash文件中我会注释出来,这里简单提一下:

  • 就是选择“简单的敌人”,然后开始游戏,此时才能使用cheat engine。
  • 对于cheat engine,选择进程的时候,不是选择game.exe,而是后缀名为 tmp0…的。
  • 自己试验的时候,要注意游戏的版本,以及是否有其他补丁,甚至语言也可能会有影响,可能你得到的地址和我这里不一样,但是并不影响修改。
  • 因为这里游戏为全屏,所以录制的时候只录制cheat engine的画面,而不录制红警的画面。
  • 在准备工作都做好之后,开始进行cheat engine的工作,大家具体看flash动画:

    修改器原理:

    从上面的flash我们得到,00A1E0C4为最终我们找到的地址,而offset为24C。我们通过这个可以知道其指向的地址内存储着我们需要的金钱数。而修改了这个金钱数,在游戏中我们也就修改成功。

    代码如下:

    代码 1 void CGameRedAlertDlg::OnBnClickedButton1()
     2 {
     3     //修改内存
     4     //now we get the right memory address.
     5     void *addrpoint = (void *)0x00A1E0C4;
     6     //then get a new pointer
     7 
     8     unsigned int newMoney = 900000;
     9 
    10     //And we should give moneyAddr the money change.
    11     HANDLE handle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
    12     PROCESSENTRY32* info=new PROCESSENTRY32;
    13     info->dwSize=sizeof(PROCESSENTRY32);
    14     BOOL bret;
    15     DWORD PID;
    16     HANDLE hProcess=NULL;
    17 
    18     unsigned int objMoney = 0;
    19     unsigned int addrInt = 0;
    20 
    21     TCHAR *procName = _T("game.tmp");
    22 
    23     bret = Process32First(handle,info);
    24     while (bret)
    25     {
    26         //get the right process.
    27         TCHAR *file = info->szExeFile;
    28         TCHAR *fileName;;
    29         //全部转换为小写,然后再匹配其中是否有子字符串
    30         _tcslwr_s(fileName=_tcsdup(file), _tcslen(file)+1);
    31         TCHAR *pDest = _tcsstr(fileName,procName);
    32         free(fileName);
    33         if(pDest!=NULL)
    34         {
    35             //found
    36             MessageBox(_T("find..."),_T("OK"));
    37             PID=info->th32ProcessID;
    38             hProcess=OpenProcess(PROCESS_ALL_ACCESS,false,PID);
    39 
    40             ReadProcessMemory(hProcess,addrpoint,&addrInt,4,NULL);
    41             void *addr = (void *)addrInt;
    42             int offset = 0x24c;
    43             int *moneyAddr = (int *)((char *)addr + offset);
    44             ReadProcessMemory(hProcess,moneyAddr,&objMoney,4,NULL);
    45             Sleep(500);
    46             BOOL bWrite = WriteProcessMemory(hProcess,moneyAddr,&newMoney,4,NULL);
    47 
    48             if (bWrite)
    49             {
    50                 MessageBox(_T("Write success"),_T("Good"));
    51             }
    52             else
    53             {
    54                 MessageBox(_T("Write Failed!"),_T("Failed"));
    55             }
    56 
    57             break;
    58         }
    59         bret = Process32Next(handle,info);
    60 
    61         if(bret==FALSE)
    62             MessageBox(_T("Cannot find such process"),_T("Error"));
    63     }
    64     if (hProcess)
    65     {
    66         CloseHandle(hProcess);
    67     }
    68 }
    69 

     

    这里将金钱数修改为900000.

    如何使用修改器:

    简单看一下修改器的截图

     

    可以看到很简单,因为只是实验,所以没有去实现什么界面,将所有的代码写在按钮的响应函数中。 

    前提,启动游戏,进入某一个遭遇战中,等金钱数目跳到10000(当然,要看你开始资金是否是10000,我默认都是),然后就可以点击Button1来修改金钱了。大家试试看吧。

     

    后记:

    其实这里仅仅是一个修改器的雏形,还有很多地方可以去完善,但是从技术学习的角度,应该算是足够了。

     

    PS

    关于编辑器的问题,不知道大家具体是怎么使用的。我原来使用CuteEditor,不过上传完flash后,不知道如何使用,在TinyMCE中找到插入flash的地方,所以要切来切去,先用CuteEditor上传,再用TinyMCE插入,同时TinyMCE似乎对代码着色没有CuteEditor好。

     

    转载于:https://www.cnblogs.com/cnyao/archive/2009/12/08/playonstudy3.html

    总结

    以上是生活随笔为你收集整理的利用cheat engine以及VC编写游戏修改器的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。