Java检查客户端jar服务器端最安全的方法

Java检查客户端jar服务器端最安全的方法,java,network-programming,Java,Network Programming,我正在创建一个客户机-服务器应用程序,在该应用程序中,我必须确保客户机具有与我提供给他们的完全相同的文件。 我正在考虑向服务器发送一个散列或jar大小,但是通过反向工程代码可以很容易地绕过这一点。 有没有办法确保他们拥有相同的文件但却无法破解?简短回答:没有 更详细的回答:很可能不会,至少在没有访问硬件并以某种方式将其锁定的情况下不会,比如使用现代游戏机。以PC软件,尤其是游戏为例。几乎每款游戏都附带了版权保护,但在互联网的某些区域,它们都可以免费下载,而且版权保护已被删除。是的,它们中的大多数

我正在创建一个客户机-服务器应用程序,在该应用程序中,我必须确保客户机具有与我提供给他们的完全相同的文件。 我正在考虑向服务器发送一个散列或jar大小,但是通过反向工程代码可以很容易地绕过这一点。 有没有办法确保他们拥有相同的文件但却无法破解?

简短回答:没有

更详细的回答:很可能不会,至少在没有访问硬件并以某种方式将其锁定的情况下不会,比如使用现代游戏机。以PC软件,尤其是游戏为例。几乎每款游戏都附带了版权保护,但在互联网的某些区域,它们都可以免费下载,而且版权保护已被删除。是的,它们中的大多数不能再用于在线游戏,但这主要是因为你需要一个只有在购买游戏时才能获得的帐户。然后是对在线游戏的修改,这将使你比其他玩家更具优势,即使游戏公司有反措施,比如在玩家的电脑上运行额外的软件,扫描可疑活动。这是一场“黑客”和游戏供应商之间的竞赛,但双方都无法获胜。我们说的是软件让我的公司赚了数百万美元,如果可能的话,他们应该有资源让他们的软件能够抵御黑客攻击


对于Java应用程序来说,修改它们相对来说比较容易,即使您使用了模糊处理技术或签名,因为Java字节码比C/C++编译器生成的机器代码更容易分析、理解并转换为Java源文件。

不。您只能让它们很难做到这一点。这样想吧——如果一个恶意用户可以重新编写你的代码,他可以在模拟器中运行它,生成你想要的任何响应,然后发送它并运行他自己的恶意代码。这有点傻,但它说明了不可能以您想要的方式限制用户。也就是说,您可能希望查看已签名/加密的jar文件以防止篡改,或者至少让篡改变得非常困难。谢谢,@BadZen!我一定会调查的,问问自己为什么。这是一个协议问题吗?还是许可证问题?如果这是一个协议问题,你并不在乎,只要客户端正确地实现了协议,坚持一个特定的代码实现可能是个坏主意。如果我是一个许可问题,你需要的是许可证的认证,而不是JAR文件的验证。谢谢你,我认为你和BadZen的回答对我来说已经足够了。看来我得用艰难的方式来做。