如何检查我的jar文件是否未修改?

问题描述 投票:0回答:3

我希望您在这些复杂的时期过得不错,周围一切都受到良好的控制:D

所以,我遇到了问题,目前我正在使用Java开发游戏,并且我知道可以修改游戏的jar文件,这使我有些恼火,因为它可以为恶意玩家提供作弊的可能。我曾经想过一个解决方案,即使它不是万无一失的,也要确保检查jar文件是否未被修改。但是问题是我不知道如何检查,我想到了一个即使我怀疑这将是最佳解决方案也可以检查文件点的系统。

[如果您还有其他想法可以确保我的游戏安全,我将很感兴趣:D

java security
3个回答
2
投票

可以检查JAR文件在您的机器上是否已被修改。只需将当前JAR文件的加密哈希与先前记录的原始副本哈希进行比较即可。 (或者只是与原始副本进行逐字节比较。)

但是您不能对JAR文件在用户计算机上进行此操作

  • 您无法登录到用户的计算机并访问其文件系统来查看JAR文件。 (即使可以,也不保证您会看到作弊者实际使用的文件。)
  • 如果您的应用程序(在用户计算机上运行)尝试报告其JAR文件的完整性,那么作弊者可能会失败。他们所需要做的就是修改包含报告代码的JAR文件,以报告fake哈希。

[基本上,除了检测作弊本身的异常行为之外,没有可靠的方法来检测作弊者正在运行修改的JAR...。


但是以这种方式思考。如果有一个好的(可靠的,没有规避的)机制来检测作弊者正在运行一个经过修改的客户端,那么作弊就不会存在于许多在线游戏中。而且(通过扩展)将没有办法击败软件许可证强制实施方案……因为软件供应商将使用类似的机制。

因此,我的建议不会在这种方法上浪费太多时间。它仅适用于技术专长或动力不足的人。

完全防止欺诈的唯一方法是在客户端运行的控制平台。这通常是不切实际的。


1
投票

关于其他想法的问题,您可以做的最好的事情是验证客户端的所有内容。您应该永远记住的一件事是无法信任客户端,因为您无法从中验证任何内容。您所能做的就是将状态存储在远程服务器上,当客户端告诉您某些信息时,对其进行验证,并在必要时给出响应,或者在必要时阻止该操作。


0
投票

您将需要以某种方式找出jar文件的位置:Java - Search for files in a directory

然后您可以检查文件的最后修改日期:https://www.boraji.com/java-get-last-modified-date-of-a-file

但是,我不会认为这是一种非常有效的防范作弊手段,因为可以修改jar文件并删除文件日期的验证。

您将需要考虑可能发生的欺诈行为以及其他安全措施。

编辑

正如Dave Thompson所指出的那样,修改后的时间戳也可以更改,即使黑客仍然需要反向工程,也无需修改jar文件,因为这是他们找出应用程序规则的方式。是。

© www.soinside.com 2019 - 2024. All rights reserved.