第85章

    就像其他游戏一样,你可以将游戏状态存入一个文件中。

    咱们来看看能不能找到点什么。

    下面这是游戏中的一处矿井。有些星球的矿井工作更快,也有工作慢的。资源的设置也不同。来看看现在底下埋的是什么样的资源:

    我保存了游戏状态。存档文件大小为9538字节。

    我在游戏中等了“几天”,现在我们可以从矿井中得到更多的资源:

    第85章 - 图1

    我再次保存了游戏状态。

    下面我们使用简单的DOS/Windows FC 工具来比较二进制存档文件。

    在第一个状态中,我有14个单位的氢气,102个单位的氧气。在第二个状态中则分别是22和155个单位。如果这些值保存到了存档文件中,我们会看到差异。的确如此,较老存档的0XBDA处的值为0x0E(14),而在新存档中则变成了0x16(22)。这可能是氢气。同样,老存档的0XBDC处的值为0x66(102),新存档中值变为0x9B(155)。这看上去是氧气。我将两个文件都放在我的网站上,想要自己实验了解更多信息的请戳这里:

    下面是在Hiew中显示的新存档文件,我将游戏中与资源相关的值标记了出来:

    我检查后确认它们是16-bit值,不是16-bit DOS软件中什么奇怪的东西,16-bit的DOS软件int类型为16比特。

    下面来验证咱们的假设吧。我在第一个位置(氢气的位置)写入1234(0x4D2):

    第85章 - 图2

    然后我加载这个已改变的文件到游戏中,查看矿井的数据:

    这就对了。

    第85章 - 图3

    0xFFFF就是65536,现在我们拥有了许多资源:

    我在游戏中跳过了“几天”,结果有些资源变少了:

    第85章 - 图4

    溢出发生了。游戏开发者可能没考虑到会出现这么多的资源的情况,没有设置溢出检查,但游戏中的矿井仍然在工作,资源在增加,所以导致了溢出。我想我不应该那么贪婪。

    可能大量的数值都保存在了这个文件中。

    这就是非常简单的游戏欺骗方法。高分文件可以通过这样打补丁轻松得到。

    更多关于文件和内存快照的比对:63.4 第681页