java桌面应用程序的预览分发

java桌面应用程序的预览分发,java,security,netbeans,derby,Java,Security,Netbeans,Derby,我使用derby作为数据库,在Java中开发了一个基于桌面的应用程序。我正在使用的IDE是Netbeans。我即将在客户机上部署应用程序。我想到了一个场景,如果客户端将开发的应用程序复制到像他这样的其他客户端,他只需复制粘贴应用程序和数据库,应用程序也可以为他工作。通过这种方式,应用程序可以被多次分发。我能做些什么来阻止未经授权的应用程序分发?如何在一个系统上注册应用程序?我认为这是应用程序的安全问题。我还搜索了互联网,发现了java代码的反编译问题。我怎样才能防止它。作为一个新手,我真的不知道

我使用derby作为数据库,在Java中开发了一个基于桌面的应用程序。我正在使用的IDE是Netbeans。我即将在客户机上部署应用程序。我想到了一个场景,如果客户端将开发的应用程序复制到像他这样的其他客户端,他只需复制粘贴应用程序和数据库,应用程序也可以为他工作。通过这种方式,应用程序可以被多次分发。我能做些什么来阻止未经授权的应用程序分发?如何在一个系统上注册应用程序?我认为这是应用程序的安全问题。我还搜索了互联网,发现了java代码的反编译问题。我怎样才能防止它。作为一个新手,我真的不知道。任何类型的建议,链接将欢迎来自堆栈上的专家


谢谢

你不能阻止复制,你能做的就是让它变得不那么有用或者不工作,除非它被注册。这样,复制的软件可以是一个免费的演示,可能会鼓励新客户购买您的软件(即,让它为您工作)

一个简单的方法是让应用程序检查您的服务器是否已注册,最好将一些关键功能放在服务器上,这样就不能单独使用客户端运行

您无法阻止反编译或反向工程,但如果您有一台中央服务器,则无法对其进行反编译,而反向工程则更为困难


顺便说一句:你应该看看游戏行业是如何解决这个问题的,因为这是一个非常普遍的问题,他们使用了很多有趣的解决方案。

如果你分发二进制文件,你就不能100%地保护你的应用程序免受破解。事实就是这样。唯一的方法是基于服务器的方法。当您在服务器上运行主功能并在服务器上处理用户注册/身份验证时。即使您在服务器上执行身份验证,破解程序也可能在反编译java代码后禁用它。正如其他人在这里发布的,如果只在服务器上完成一些重要的(业务)功能,您会更安全。@vitaly我在我的评论中写到这一点。请仔细阅读如果我没有中央服务器,还可以保护它吗?你可以混淆代码,并设置法律限制。有些人根据MAC和系统信息创建注册密钥,但所有这些都可能被伪造,因此它只在大多数情况下提供保护。我通过开源保护我的软件不受逆向工程的影响;)我可以试一下自己的电脑,它的身份验证过程就像服务器一样。我必须与它在线时,注册是要做的其他,当系统是关闭的,如果该软件是在其他一些机器上尝试它不会启动。你对此有何看法?这取决于用户是否愿意在离线时运行该程序。你可以让软件运行,只要它在过去的N天内检查过。如果用户没有注册,我会运行该软件,但鼓励他们购买该软件。e、 g.在启动屏幕上,将标题更改为(未注册),如果未注册,则限制某些功能。这样,新用户可以学习使用该软件,并可能在以后购买该软件进行注册。或者你可以让新用户可以运行一个月,之后软件就不工作了。