Java 如何加密/混淆使用ApacheTomcat部署的Web服务? 我的问题是:

Java 如何加密/混淆使用ApacheTomcat部署的Web服务? 我的问题是:,java,class,tomcat,proguard,classloader,Java,Class,Tomcat,Proguard,Classloader,目前,我的应用程序加载在多个服务器上,这样终端客户端就可以访问它,而无需离开局域网。我所做的安装只不过是通过war在tomcat7/tomcat9上进行部署。任何了解最低安全级别的人都可以访问安装文件夹并复制所有没有最低安全级别的.class文件(使用非常简单的反编译器,您可以看到源代码) 我完全理解,作为一个服务器应用程序,如果你不能访问机器,你就不能拥有文件,不幸的是,很多人都有我的目标是拥有相同的应用程序,但任何有访问权限的人都无法反编译/读取文件。 我已经做过的测试: 我发现的第一种方法

目前,我的应用程序加载在多个服务器上,这样终端客户端就可以访问它,而无需离开局域网。我所做的安装只不过是通过war在tomcat7/tomcat9上进行部署。任何了解最低安全级别的人都可以访问安装文件夹并复制所有没有最低安全级别的.class文件(使用非常简单的反编译器,您可以看到源代码)

我完全理解,作为一个服务器应用程序,如果你不能访问机器,你就不能拥有文件,不幸的是,很多人都有我的目标是拥有相同的应用程序,但任何有访问权限的人都无法反编译/读取文件。

我已经做过的测试:
  • 我发现的第一种方法是使用一个名为的应用程序,该应用程序将能够完成所有任务。创建一个不可解密.class文件的安全环境。纸上写得很好,但对我来说不起作用,应用程序创建了一个Tomcat文件夹,您可以在其中部署.war,要启动它,您必须使用特定的bat。它设法加密了文件,但在启动时它没有向我显示定义的方法,调用也不起作用

  • 此时,我决定尝试复制相同的逻辑,保持相同的流:首先创建一个能够读取应用程序的.class的类加载器。为了做到这一点,我尝试遵循以下指南,尽管这三个指南都很混乱:

    • 我知道可以定义一个系统范围的类加载器,它可以同时加载库和类

    • 可以在“%TOMCAT%/conf/context.xml”文件中定义一个加载程序,它将在其中管理所创建的webapp的类

      不幸的是,最后两点都不起作用

  • 我还试图简单地混淆(使用proguard)这些.class文件,但它一开始并没有读取它们

  • 我希望我已经说得够清楚了。无论你在评论中写了什么,我都会试图澄清这些方面。

    没有内置的方法来实现这一点,你基本上是在要求其他软件/插件/工具来实现这一点,这是离题的。你为什么要担心呢?您是否担心其他人在没有许可证的情况下运行代码,或者他们窃取您的IP?两者都很难实现。@luk2302我担心有人会窃取我的源代码!我想问的是,是否有一种方法可以使用类加载器来混淆/加密我的代码,并在开始时对其进行除错/解密以正常运行。