0

我已经制作了一个 java 项目并想将其交付给客户端,但我不想将其作为 jar 文件交付,因为客户端可以通过解压缩 jar 文件轻松查看源代码。

如何打包我的 java 项目,使客户无法查看源代码或无法更改源代码?

还有一件事,我是否可以集成一个密钥功能,以便客户端只能通过首先使用我提供的密钥注册它来访问该软件?

其次,我是否可以通过该密钥集成另一个功能,通过该功能软件只能在单台机器上运行?

请记住,该软件应该仍然具有跨平台功能,如果不可能,那么我如何为 Debian Linux 制作它,就像我在 Windows 上制作的一样。

4

3 回答 3

2

混淆器

于 2009-09-05T12:00:04.447 回答
2

到你的第一点。为什么不只压缩类文件?这些是字节码,因此客户端将无法查看源代码。

至于提供钥匙。可以做到这一点,并且有一些库允许这样做,但要小心,至少据我所知,还没有开发出尚未破解的 DRM 系统。大多数用户不喜欢软件限制他们可以做什么。这一点也适用于你的第三个问题。

于 2009-09-05T12:01:10.807 回答
1

您可以做一些简单的事情来让客户端获取您的源代码和强制执行每主机(等等)许可有点困难。例如,混淆器使对字节码文件进行逆向工程变得更加困难,并且许可证管理器支持基于您生成和提供的“密钥”的一系列限制。

问题是这些都不能保护你免受那些决心颠覆试图强加的限制的人的伤害。例如,没有混淆器可以阻止某人找出您的代码调用许可证管理器的位置,并且一旦他们知道他们可以修改代码以破坏任何许可证检查。

如果没有锁定整个执行平台(例如,关闭客户端运行调试器、读取物理设备等的能力),您对此无能为力。

更可行的策略是在您要求客户签署的软件许可证中包含适当的保护措施。并接受如果客户故意违反许可协议,您可能需要将客户告上法庭的风险。

于 2009-09-05T12:55:49.857 回答