问题描述
|
如何阻止某人复制和复制我在Java中制作的应用程序?我正在使用MysqL作为我的应用程序的后端,并且该平台是Linux。有没有办法提供这种安全性?
编辑:
有没有像在Windows中那样的方式,即使我们将文件夹复制并粘贴到其他系统中,某些应用程序也无法使用。我不知道他们是怎么做到的。我在这里可以做类似的事情吗?
解决方法
好的,这是我的评论的替代答案。
不出售软件,出售支持。
实施与电子邮件地址绑定的简单许可系统。
仅对具有注册电子邮件地址的用户提供支持。
有关创建它的提示,请参阅OTN上的软件许可系统。此处显示的解决方案是可破解的,但不是最终用户所为。
, 实际上,您无法采取任何措施来阻止盗版,因为用户必须能够在其计算机上运行代码。一些公司使用了硬件令牌,但是对于小型开发人员而言,这是昂贵的。
一个小步骤是仅交付类文件,并可能通过混淆器运行它们。
这里以混淆器为例。
http://proguard.sourceforge.net/
这是有关保护Java代码的好页面。
http://www.cs.arizona.edu/~collberg/Research/Students/DouglasLow/obfuscation.html
, 您的项目是开源的吗?如果是这样,那么您将要使用适当的许可。如果不是,请阅读EULA并咨询律师。
, 我们无法阻止用户复制您提到的方式。
这是所有中型产品公司所面临的最大挑战,并且他们花费大量时间来防止这种情况。
我同意@Milhous和@Andrew Thompson的回复
, 有几种商业Java许可系统可以完全满足您的需要(但是您应该深入研究细节,因为它们并不是实际上都是多平台Java,而是包装了C库)。
防止应用程序在其他计算机上进行简单复制的标准技术是节点锁定,其中应用程序在运行时检查某些系统参数是否匹配其许可证上的加密值。通常使用MAC地址,但这不是一个好的选择,因为它可以由许多系统上的管理员设置。我建议使用参数的组合,例如登录名,主机名,安装目录等。
对于小批量销售,许可过程可以是手动的,对于大批量许可,许可过程可以是自动的。在自动方法中,许可证在产品激活期间自动对用户透明地锁定到其主机。现代的[产品激活] [2]系统既简单又易于用户使用,既可以满足您防止复制的目标,又可以满足用户的许可(如果他们愿意的话,可以将其许可证重定位到另一台计算机上)(无论他们的系统是否具有网络连接。
, 我正在尝试这种方法,但是也许您可以配置程序以在首次运行时获取计算机的Mac地址(您要在其上运行)。然后将其保存到注册表。然后,在您的主要方法中,让它获取您的mac地址,并将其与注册表地址匹配。 (注册表倾向于在有空格的地方提出斜杠,但是删除斜杠应该可以使您获得匹配)。