C/C++游戏编写游戏辅助基础01之CE的使用

从今天开始会开更C/C++写游戏外挂的教程,本系列教程需要掌握一定的C/C++和MFC的基础,并且以实例为主,前面几个DEMO初步定位单机游戏和简单的网络游戏,也就是通过模拟鼠标键盘就能完成的,后面的不出意外应该是某射击游戏(XF),某RPG游戏,等等。。

好了,进入今天的正题,写外挂大部分时候是要找出游戏的数据,分析数据是干嘛,然后直接操作这块数据,找数据(内存地址)有个比较好的工具,叫做CheatEngine简称CE,网上可以下载到,我的工具包里面也有,不过是6.1的英文版,大家可以自行下载最新的中文版

点了附加以后,会出现如下图所示的对话框,我们选中我们要附加的进程,这里拿扫雷做例子

选中扫雷后点Open(打开),找数据之前我们考虑下,如果是我们设计这个游戏的话怎么存雷比较靠谱,我们先假设他是存在数组里面的,那么我们找到数组的第一个元素就行了,因为数组的第一个元素就是数组的首地址,那么我们先在扫雷的第一格点一下,如下图,扫雷的游戏帮我们把那几格显示出来了,我们在CE扫描类型(scantype)哪一行选中未知的值(unknowninitialvalue)值类型(valuetype)我们先选byte(字节)然后点首次扫描(firstscan)

CE显示它找到978944个值,

我们在游戏几面随便点一个地方。我这里选的右下角

当2显示出来以后,游戏的部分数据变了,但是第一个格子的数据肯定没变,所以扫描类型我们选未变化的值(unchangedvalue)然后点继续扫描(nextscan)

我们看到已经少了一点了还有975942个,我们继续在游戏界面瞎点然后点继续扫描

又少了几个。我们继续瞎点,这次运气不太好,点到个雷,没关系我们先点继续扫描

由于我们点了一个雷,必须得重新开始游戏,点那个笑脸重新开始游戏以后我们点下第一格,

这次第一格是1了,之前是空的,由于第一格值已经发生变化了,所以扫描类型这里选择改变的值(changedvalue)然后点继续扫描

一下子少了一堆了。只有120个了,我们在游戏界面继续瞎点然后选择未改变的值,继续扫描

由于刚才点到雷了,所以得重新开始游戏,我们点下笑脸重新开始,开始以后点下第一格,发现还是1,那就选择未改变的值然后继续扫描

只剩下5个了,而且都是基址(在CE中绿色显示的就是基址)

我们把这五个地址选中,(若想知道更多,请去看我的博客--http://www点dbgpro点com)然后点下那个红箭头

所有选中的地址都到下面的框框里面去了,我们可以查下它附近的内存,然后判断是不是游戏的数据,不是就得换个方法重新找

我们单击某个地址,然后右键,浏览内存地址(Browsethismemory)这里我们选第一个地址就行了,第二个地址跟第一个地址很近应该是后面的某个地方,其他的地址应该也在雷这个数组里面

可以看到弹出这个对话框了

我们跟扫雷窗口比较下40正好是0的ASCII码41是1的看前几个能对上,后面8F是什么鬼,我们点一下

中雷了。那么8F应该就是表示是个雷而且0x1005361就是雷的基址我们记住这个地址,编程的时候需要用到

好了,今天的教程到此为止,主要是介绍怎么找数据下一篇教程我们将编程实现秒杀的功能。

发布于 2025-12-27
98
目录

    推荐阅读