在Java应用程序中实施许可证实施的最佳方法是什么,以便在用户不购买许可证的情况下无法“分发”和使用应用程序?
答案 0 :(得分:8)
看看truelicense这是一个开源框架。如果你想自己创建一些文档来解释这些概念,你也可以通过查看代码来获得一些好的想法。
修改强> 值得一提的是,它不是一个复制保护方案
答案 1 :(得分:7)
我建议你甚至不要尝试添加复制保护。你会惹恼别人。如果人们喜欢您的产品,您更有可能获得销售。小偷和对待小偷这样的顾客是不会有帮助的。 (除非产品真的很糟糕,否则你必须阻止人们在购买之前试用它。)
您可能希望发送许可证密钥,其唯一目的是满足那些想要获得收入的用户。只需在某处添加状态即可显示是否已付款。状态需要相当明显,以便很明显发生了一些事情(我之前工作的产品是软盘上的两张光盘 - 一半的支持电话是因为安装程序没有要求第二个[win32s]光盘)。
答案 2 :(得分:5)
我所知道的许可计划并不容易破解。我不会详细说明,但作为一个例子,在Java情况下,如果它是用Java完成的,那么它可以被反编译(就像C ++或任何编译语言一样,但Java比C ++更容易)。如果它是本机完成的,那么你需要本机方法,DLL / so可以替换为允许访问的方法。
对于C / C ++示例,我知道有人反编译CL(Microsoft编译器)以确定它们如何命名mangling。他们只有二进制文件,他们能够用反汇编程序和大量时间来完成它。
不要为这类事情烦恼,它会惹恼诚实用户,并适度减慢那些想要复制它的人。 Take a look at World of Goo (great game!) and their take on DRM(这与你所说的相似)。
World of Goo的开发者发现他们的product was pirated 90% of the time(他们解释了这个数字可能是不准确的),与另一款DRM附带的游戏相比,92%的时间是盗版。
如果您正在谈论合法企业,那么他们通常希望获得许可证合规性,因此确保不进行复制是一种浪费。如果你在谈论那些不会开始购买产品的人,或者只是不想为此付费,那么你实际上并不会改变非法获取软件的人数,你只会放慢速度。得到它的第一个人 - 之后猫被淘汰了。
答案 3 :(得分:2)
就我个人而言,我认为IntelliJ是正确的:30天的全功能版本。你不应该比这更具限制性。
“功能齐全”部分非常重要。如果您的未注册版本如此残缺,以至于无用,那么您希望人们如何决定购买它?他们在决定喜欢它们之前必须尝试功能并且想要它们,但是一些供应商认为人们会购买一些他们无法尝试的功能的东西是荒谬的。
Oracle处于最自由的一端。您基本上可以下载其软件的全功能版本并使用它。他们将许可视为一个社会问题,这个论点有很多优点。
您永远不应该唠叨或以其他方式惹恼您的潜在客户(超过可能在预定时间段后使软件到期)。你应该给出的最多通知是“在N天内过期”,比如闪屏或什么的。
您可以而且应该做的另一件事是为您的软件提供较低的进入门槛。
提供廉价(如果不是免费的)学术或个人版本。营销也是一个好主意。我的意思是采取IntelliJ:它是免费提供给批准的开源项目。
至于执法的技术方面:不要太在意技术方面。永远不要选择任何惹恼用户的方案,或者更糟糕的是,减慢软件速度(如某些方案那样)或(甚至更糟)违反用户操作系统的安全性(例如索尼rootkit惨败)。你的执法并不意味着防黑客。如果人们想偷你的软件,他们会。对于社交而非技术问题,执法系统是温和的提醒(仅此而已)。答案 4 :(得分:-1)
读完oracle的BCL(肯定了商业自由)。然后我与一位oracle代表进行了对话,他说JavaSE可以免费用于商业用途。