什么是游戏基址?
游戏基址是保持恒定的两部分内存地址的一部分并提供一个基准点,从这里可以计算一个字节数据的位置。基址伴随着一个加到基上的偏移值来确定信息准确的位置(绝对地址)。
全局基址 一级基址 二级基址 三级基址的关系:
第一步、计算机内存一般分为四级存储。(印象里好像是四级)。
第二步、在最底下的,往往是游戏的全局基址(决定用户界面以及一些细节等)和一些响应用户操作而对应实施的命令。
第三步、该是传递基址了。现在网游的基址往往是动态的。这个是因为底层的基址不会直接传递给上一级内存。它会加上一个偏移量,然后再传递。这个传递就是指针了。
第四步、当传递到第四层的时候,就会表现在游戏的用户界面。
"----->"表示"指针指向"
基址(存放的内容是一级基址起始地址)——>一级基址(存放的内容是二级基址的起始地址:假定为a)
[一级基址(a) + 偏移量]------>二级基址(存放的内容是三级基址的起始地址:假定为b);
[二级基址(b)+偏移量]-------->三级基址
三级基址-------->游戏界面
自己制作游戏修改器必须要找到一级基址
注意:对于单机游戏 ,游戏基址是不变的。对网络游戏, 更新时可能会变。(因此才会有游戏更新后,某外挂不可以使用。其本质可能是基址改变的。)
另外,所谓的游戏的基址存在于虚拟内存中,比如基址为0x006A9EC0。
问题:基址无非就是一块内存,同时基址又不可以改变,如果计算机中该块内存被占用了,然后再安装基址为0x006A9EC0的游戏,此时会不会写入失败,造成无法安装呢?
解析:不会,基址0x006A9EC0是虚拟内存,会经过页面地址重地位,将虚拟地址转换成本机的物理地址,即不存在地址冲突问题。即使十个游戏的基址都是0x006A9EC0都不会存在冲突问题。
了解基址后,接下来看看如何寻找游戏基址。
工具:Cheat Engine (内存修改器)或Ollydbg。本实例用CE。。。。
例子:植物大战僵尸--英文原版
说明:利用阳光值,来一步一步深入寻找游戏基址。因为阳光值可以看到,可以改变。也可以通过金币等其他方式。
首先,打开游戏和CE工具,将游戏的进程加载进CE工具中。