C/C++游戏外挂基础01 CE的使用

时间:2024-03-20 14:51:27


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


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

CE的界面如下所示 我们先点击红色箭头处指向的按钮,表示我们要附加一个进程  我们要找一个进程的内存必须先运行它 然后用ce附加

C/C++游戏外挂基础01 CE的使用

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

C/C++游戏外挂基础01 CE的使用

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

C/C++游戏外挂基础01 CE的使用

CE显示 它找到978944个值,

C/C++游戏外挂基础01 CE的使用

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

C/C++游戏外挂基础01 CE的使用

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

C/C++游戏外挂基础01 CE的使用

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

C/C++游戏外挂基础01 CE的使用

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

C/C++游戏外挂基础01 CE的使用

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

C/C++游戏外挂基础01 CE的使用

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

C/C++游戏外挂基础01 CE的使用

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

C/C++游戏外挂基础01 CE的使用

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

C/C++游戏外挂基础01 CE的使用

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

C/C++游戏外挂基础01 CE的使用

我们把这五个地址选中,然后点下那个红箭头

C/C++游戏外挂基础01 CE的使用

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

C/C++游戏外挂基础01 CE的使用

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

C/C++游戏外挂基础01 CE的使用

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

C/C++游戏外挂基础01 CE的使用

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

C/C++游戏外挂基础01 CE的使用

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

C/C++游戏外挂基础01 CE的使用

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