检测Java JAR /代码篡改

我正在编写一个作为JAR文件分发的软件。 目前,这个JAR文件可以被篡改,以检索和保存我们的服务器通过URLClassLoader传输的另一个文件,进行反编译,并在我们的代码中找到应该保持私有的各种东西,以保证使用它的客户端的安全性。 基本上,我想实现一种方法来检查原始JAR是否被篡改。 我知道通过在原始类中实现对SignedObject有效性的检查是不可能的,因为Java的性质可以被反编译,但是还有其他一些方法可以确定代码是否在原始代码中被篡改文件? 此检查可以通过下载的中间类来检查有效性,或任何其他可以保证工作的方法。 我整天坐在这里试图找到解决这个问题的方法。 欢迎任何帮助。

这在理论上和实际上都是不可能的。 jar子的validation发生在客户端。 任何加密都不会以可validation的方式呈现给您,您相信客户端会提供任何加密。

即使您要从jar文件本身请求任意字节进行validation,恶意用户也可以配置从一个好的jar中获取的字节,但是由坏代码提供。

您可以使用加密certificate来确保另一方数据,但确保它只有该数据的副本/修订版/版本是不可能的。 坚定的攻击者可以向你提供任何谎言,因为他可以在任何validation中声明他拥有有效的jar子。

简而言之,正确数据的存在并不意味着存在相同的数据。