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

Java safest way to check client jar server side

我正在创建一个客户端-服务器应用程序,我必须在其中确保客户端具有我提供给他们的完全相同的文件。 我正在考虑向服务器发送哈希或 jar 大小,但可以通过对代码进行逆向工程轻松绕过。 有没有办法确保他们拥有相同的文件但又无法破解它?

简答:否

更长的答案:很可能不会,至少不是没有例如可以访问他们的硬件并以某种方式锁定它,就像使用现代游戏机一样。以PC软件,尤其是游戏为例。几乎每款游戏都附带版权保护,但在互联网的某些区域可以免费下载这些游戏,并取消了版权保护。是的,其中大部分不能再用于在线游戏,但这主要是因为您需要一个只有在购买游戏时才能获得的帐户。然后是对在线游戏的修改,这将使您比其他玩家更具优势,即使游戏公司有反措施,例如玩家计算机上 运行 的附加软件,扫描可疑 activity.这是一场 "hackers" 和游戏厂商之间的竞赛,但双方都无法获胜。我们谈论的是软件让我价值数百万美元的公司应该有资源来证明他们的软件被黑客攻击,如果可能的话。

对于 Java 应用程序,修改它们相对容易,即使您使用混淆技术或签名,因为 Java 字节代码更容易分析、理解并返回 Java 源文件,而不是 C/C++ 编译器生成的机器代码。