如何阻止人们编辑保存文件

时间:2016-07-07 00:39:27

标签: anti-cheat

(首先,如果这属于另一个stackexchange站点,请说明。我不确定这是否属于此处。)

我正在制作电脑游戏。它是一个roguelike,意味着一旦你死了,你的保存文件就会被删除。您只需复制保存文件,然后在死后恢复它,就可以轻松地欺骗这些文件。当然,我想阻止人们这样做。我已经拥有的一些想法是:

  1. 加密保存文件。这使得人们只能复制+粘贴文件。
  2. 不仅仅是一个保存文件。有某种类型的" masterfile"这些信息包含您玩过多少游戏,哪些游戏已经死亡等等。一旦有人死亡,主文件将检测到有人试图恢复旧的保存文件。
  3. 在此之后,人们可以从前后复制并粘贴整个游戏文件夹,它仍然可以正常工作。我接下来的几个想法有点难以做到:

    1. 使用时间戳来检测某人编辑文件的时间。问题是人们根本无法移动文件。我可以有某种类型的" export / freeze"功能,但很容易被滥用。此外,如果某个其他程序在不知不觉中编辑该文件可能会让游戏认为您在作弊时不会作弊。我也看到了在线程序,可以让你编辑时间戳。
    2. 使用注册表来保存一些信息。我试图让我的游戏在某种程度上跨平台,我不知道在非Windows系统上是否有类似注册表的东西。人们仍然可以编辑注册表。
    3. 现在,我认识到没有办法停止作弊。我只想设法让最少数量的作弊者成为可能。

      所以,我的问题:

      1. 想法3和4是否可行?
      2. 还有其他好方法可以阻止人们编辑/替换文件吗?

1 个答案:

答案 0 :(得分:0)

  

如何阻止人们编辑保存文件?

你不能。

  

我只是想找到使骗子最少的方法。

试图制止作弊只会鼓励他们,因为开发游戏作弊的全部目的是挑战自己,做出更好的挑战只会使其变得更有趣。

但这只是一些提示:

使用一种晦涩难懂的方法加密/混淆保存文件

使用一种非常晦涩的散列保存文件的方法,将散列存储在其他位置。加载保存文件时,请与哈希进行比较。

随机想法:要使查找第二个哈希文件更加困难和混乱,请使用相同的文件扩展名将其存储在模型/纹理中。因此,当游戏加载时,它会从同一目录中同时加载纹理和哈希文件。对于没有良好逆向工程技能的普通作弊引擎用户来说,这将非常困难。

使用简单的反调试技术,例如IsDebuggerPresent()

要了解Windows进行反调试的更多技术,最好的资源是:

Peter Ferrie的“最终”反调试参考