隐藏java代码

隐藏java代码,java,Java,我想给我的客户一个可执行的jar文件,其中有一段代码在一段时间后过期。但是,如果客户机使用一些反编译器并读取类文件,他可以修改并使代码正常工作。我有什么方法可以阻止这种情况发生 我可以使用deleteOnExit或其他技术吗?对不起,在当前使用的任何环境中都不可能。如果您非常担心客户窃取您的代码,那么重新评估您与他的关系可能是件好事 另一方面,您可以为他提供您软件的门控VNC视图,他可以在您控制环境的情况下使用它。最好的解决方案是PaaS平台即服务。。 将您的逻辑作为服务器应用程序放在服务器上,

我想给我的客户一个可执行的jar文件,其中有一段代码在一段时间后过期。但是,如果客户机使用一些反编译器并读取类文件,他可以修改并使代码正常工作。我有什么方法可以阻止这种情况发生


我可以使用deleteOnExit或其他技术吗?

对不起,在当前使用的任何环境中都不可能。如果您非常担心客户窃取您的代码,那么重新评估您与他的关系可能是件好事


另一方面,您可以为他提供您软件的门控VNC视图,他可以在您控制环境的情况下使用它。

最好的解决方案是PaaS平台即服务。。 将您的逻辑作为服务器应用程序放在服务器上,让客户端应用程序通过web服务或任何其他方式与服务器应用程序通信。。这是最好的实际解决方案


顺便说一句:使用模糊处理无法保护您的代码。

如果您非常担心有人会破解您的软件,您需要使用某种客户端/服务器架构,您的客户端只能登录到服务器中的网页

任何代码都可以破解,如果有人真的想破解的话。当然,大多数时候根本不值得这么做。

在过去,我经常进行模糊处理。它做得很好,但是,您必须花时间对其进行配置,使其能够正常工作以满足您的需要。如果您使用反射,那么您必须确保它不会混淆那些类/方法/属性名称等。它的优点之一是它也会混淆字符串

尽管如此,最终的结果是,您的客户机仍然会以一种非常难以理解的格式保存您的代码。然而,如果他真的有时间和精力,他可以进行逆向工程

这在很大程度上也取决于你到底想保护什么。如果您试图保护实际的IP,那么混淆将帮助您解决问题。如果您试图保护许可,那么混淆只会让某些人更难弄清楚您的许可模块在哪里以及如何绕过它们。在后一种情况下,我建议您在几个不同的类中使用类似于编织许可证检查的方法,以便更难打破。然而,这也不是失败证明


正如其他人已经说过的,唯一的防愚系统是首先不给客户机代码,而是将SAAS服务更改为软件解决方案。

使用能够从加密存储加载类的修改类加载器怎么样。由于您不直接公开jar及其内部的类,因此可能会有所帮助,但正如上面所有其他人所说的,它不会是防弹的。

使用。您可以在运行时将jar复制到临时目录,并使用它启动另一个JVM,然后从那里删除原始文件。但实际上没有,所以你可以向我们解释你实际需要做什么。这会使客户更难,但也不能保证客户不可能对代码进行反向工程并破解它。@Jesper它通常会使代码的除臭成本高于购买成本。我不知道有什么方法可以让它100%不可读。也许把它包装成一个exe文件。反汇编比模糊代码更难读取。