如何阻止某人复制和复制我在java中创建的应用程序?我使用mysql作为我的应用程序的后端,平台是Linux。有没有办法提供这种安全性?
编辑:
有没有像Windows中的某些应用程序,即使我们复制文件夹并将其传递到其他系统,它也无法正常工作。我不知道他们是怎么做的。我可以在这里做类似的事吗?
答案 0 :(得分:5)
好的,这是我评论的另一个答案。
有关创建该提示的提示,请参阅OTN上的Software Licensing System 。这里显示的解决方案是可以破解的,但不是偶然的最终用户。
答案 1 :(得分:3)
您可以采取 nothing 来阻止盗版,因为用户必须能够在其计算机上运行代码。一些公司使用硬件令牌,但对于小型开发人员而言这是昂贵的。
一小步是仅传递类文件,并可能通过混淆器运行它们。
这里是一个示例混淆器。
http://proguard.sourceforge.net/
这是一个关于保护java代码的好页面。
http://www.cs.arizona.edu/~collberg/Research/Students/DouglasLow/obfuscation.html
答案 2 :(得分:1)
您的项目是开源的吗?如果是,那么您将要使用appropriate licensing。如果没有,请阅读EULA并咨询律师。
答案 3 :(得分:1)
我们无法阻止用户以您提及的方式进行复制。
这是所有中型产品公司面临的最大挑战,他们花了很多时间来防止这种情况。
我与@Milhous& @Andrew Thompson回复
答案 4 :(得分:1)
有几种商业Java许可系统可以完全满足您的需求(但您应该深入了解细节,因为并非所有这些系统实际上都是多平台Java,而是刚刚包装了C库)。
阻止应用程序在其他计算机上进行简单复制的标准技术是节点锁定,其中应用程序在运行时检查某些系统参数是否与其许可证上的加密值匹配。 MAC地址是常用的,但这不是一个好的选择,因为它可以由许多系统上的管理员设置。我建议使用参数组合,例如登录名,主机名,安装目录等。
许可流程可以手动进行小批量销售,也可以自动进行大批量许可。在自动化方法中,许可证在产品激活期间自动锁定到其主机,对用户透明。除了对用户简单和熟悉之外,现代[产品激活] [2]系统既可以满足您防止复制的目标,又可以允许用户将许可证重新定位到另一台机器(如果他们的系统是否具有互联网连接。
答案 5 :(得分:-1)
我正在尝试自己,但也许您可以配置您的程序以在首次运行时获取计算机的mac地址(您希望它运行)。然后将它保存到注册表中。然后,在您的main方法中,它获取您的mac地址并将其与注册表的地址匹配。 (注册表倾向于在有空格的地方提出斜线但是删除斜线应该让你匹配)。