抱歉,我不太确定如何说明问题标题。我的问题是这样的,我开发了一个Java程序,我想把它分发给我的朋友。所以我将它导出到Jar文件,但我不希望他们提取jar文件来查看代码。无论如何要制作程序,以便没有人可以获取源代码,而只是启动程序。
7 回答
您始终可以从已编译的类文件中获取原始代码。但是,您可以通过使用混淆器使那些希望反编译此类代码的人的生活变得非常困难,因此反编译的代码几乎无法阅读。以下是您可能希望调查的开源 Java 混淆器列表。
如果计算机可以运行它,那么人类就可以对其进行逆向工程。
事实是没有人想要你的源代码。认为将他们拒之门外是值得的,这是相当傲慢的。
你能做的最好的就是混淆。
Jar 文件通常不包含代码。它们通常只包含.class
运行程序所需的(字节码)文件。
您可以在服务器上执行部分程序。基本上,为了执行程序的一些重要、大型和中心功能,客户端会联系您的服务器以计算此功能。
然后您可以将客户端分发给每个人,并为您自己保留服务器代码。只需保持服务器运行即可。然后其他人无法访问整个源代码,但可以执行该软件。
这是唯一可靠的方法。通过足够的努力,可以通过某些方式规避其他方式。
您似乎将安装应用程序与可执行文件混淆了。而且我还认为您将 java jar 应用程序与普通的 .exe 混淆了。
即便如此,这些只是仍然可以反编译的代码包,只是不像解压 jar 文件那样容易,而 jar 文件的设计目的是易于提取。
Java 设计为在 JVM 上运行,因此将其打包在 .exe 中是一种糟糕的形式,因为这会立即将其锁定在 Windows 上,这首先破坏了 Java 的意义。所以我建议不要这样做。
正如大家所说,如果您的程序运行良好并且您的用户喜欢它,他们甚至会考虑反编译它是很少见的。但是,如果他们愿意,他们只是从一个如何到无论如何(不管是什么语言)进行的单一网络搜索。关于商业分发,大多数情况下,软件被混淆并分发在它的 .jar 中,并带有 .exe、.app、.bin 等形式的特定于体系结构的启动器。不要将它们与通常是实际的可执行文件混淆.jar 文件某处。