0

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

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

  1. 加密保存文件。这使得人们只能复制+粘贴文件。
  2. 不仅仅是一个保存文件。拥有某种类型的“主文件”,其中包含有关您玩过多少游戏,哪些游戏已经死亡等信息。一旦有人死亡,主文件将检测到有人试图恢复旧的保存文件。

但是,在此之后,人们可以从之前和之后复制并粘贴整个游戏文件夹,它仍然可以正常工作。我接下来的几个想法有点难做:

  1. 使用时间戳来检测某人何时编辑了文件。问题是人们根本无法移动文件。我可以拥有某种类型的“导出/冻结”功能,但这很容易被滥用。此外,如果某些其他程序在不知情的情况下编辑了该文件,则可能会使游戏认为您在作弊,而实际上您并没有。我还看到在线程序可以让您编辑时间戳。
  2. 使用注册表来保存一些信息。我试图让我的游戏有点跨平台,我不知道在非 Windows 系统上是否有类似注册表的东西。人们仍然可以编辑注册表。

现在,我认识到没有确定的方法可以阻止作弊。我只是想办法让作弊者人数最少。

所以,我的问题:

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

1 回答 1

0

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

你不能。

我只是想办法让作弊者人数最少。

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

但这里只是一些提示:

使用非常晦涩的方法加密/混淆保存文件

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

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

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

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

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

于 2019-11-12T05:53:44.583 回答