我们使用标准项目(如硬盘和CPU ID)将我们的软件许可证锁定到物理硬件。我们如何降低客户安装到虚拟机然后克隆虚拟机的风险,绕过我们的许可?
答案 0 :(得分:8)
许可。告诉您的用户,他们可能无法运行未经许可的副本。
我们实际上未能购买软件许可证,因为供应商害怕虚拟机:我们部门的基础架构正在转向集中式虚拟化解决方案,我们有打击供应商允许为他的软件购买许可证!
不要害怕付费用户。
购买许可证的人太急于寻找另一种解决方案,无论如何都会有太多麻烦。
(祝你的老板好运,但是......)
答案 1 :(得分:7)
一种方法是拥有许可服务器。当您向客户端(在VM上)输入许可证代码时,它会联系服务器并向其发送许可证代码和其他信息。它反复联系它(你定义间隔 - 可能每隔几个小时一次)询问'我还有效吗?'随着这个请求,它发送一个唯一的ID。服务器回复'是,你是有效',并发送一个新的唯一ID返回给客户端。客户端将此唯一ID返回,并将其下一个请求发送回服务器。服务器验证这是与该许可证发送给客户端的ID相同,即先前的请求。
如果VM是重复的,下次它询问服务器“我是否有效?”时,唯一ID对于它或其他VM都是不正确的。两者都不会继续发挥作用。
如果服务器出现故障或网络出现故障,您将需要确定要执行的操作,以便客户端无法与服务器通信。你立即禁用你的软件吗?馊主意!不要让你的客户生气。你会想给他们一个宽限期。这应该多久?几天?周?
假设您给他们一个月的宽限期。理论上,他们可以在输入许可证密钥后立即克隆父虚拟机,然后在其宽限期用完之前将其他虚拟机恢复到此克隆,从而禁用对它们的网络访问。这对您的客户来说是一件麻烦事,只是为了盗版软件的额外副本。您必须确定哪种宽限期不会对您的合法客户造成麻烦,同时希望为您提供所需的保护。
通过验证VM的时钟设置是否正确,可以实现额外的保护。这样可以防止上述盗版行为。
另一个考虑因素是,精明的用户可以编写自己的许可服务器来与VM实例进行通信,并告诉他们所有“你都很好” - 因此加密通信可以帮助阻止这种情况。你想到这里走多远取决于你认为盗版对你的客户有多大的影响。最终,你将无法阻止真正拥有时间的海盗,但你可以保持诚实的用户诚实。
答案 2 :(得分:6)
没有充分理由锁定物理机器。最后我检查过计算机可能会崩溃,然后用户可能不仅会被一台死机弄得不方便,而且还要打电话给你让软件锁定到新机器上。如果您必须进行严格的许可证管理,请使用(本地)管理服务器并运行副本,确认每隔几分钟就有一个许可证。只要意识到无论你做什么,如果有人真的想要使用你的软件而不付钱给你,他们会找到一种方法。
答案 3 :(得分:2)
您需要在计算机“硬件”之外进行身份验证。大多数公司选择硬件密钥(加密狗)用于软件,而且用户会忍受它的高成本。
其他公司使用在线方法 - 如果多个具有CPUID和其他硬件的用户同时使用给定的许可证,则禁止另一个实例化,或关闭现有的实例化。
你必须根据自己的需要选择保护,并且消费者愿意跳过你的反盗版圈。
- 亚当
答案 4 :(得分:1)
除了需要定期在线激活外,你可以做很多AFAIK。
我们在使用Norton-ghosting 物理计算机时遇到问题。显然硬盘序列号也是鬼影。
答案 5 :(得分:1)
如果您的软件在VM下运行,那么它将在任意数量的克隆VM下运行。因此,唯一的选择似乎是阻止它在VM下运行。这是一篇关于虚拟机检测的文章:Detect if your program is running inside a Virtual Machine和一篇关于thwarting的文章。
顺便说一句,克隆虚拟机通常足以阻止临时用户绕过您的许可,而那些一心想破解的人可能会找到绕过它的方法。
答案 6 :(得分:1)
“不要打扰”是短版本。这对你的客户来说是非常微不足道的,如果他们这样做,那么要么他们不会支付他们使用的东西而不管什么(他们不会使用它,除非他们可以免费获得)或者你只是平充电很多(就像你在g。。)
“真正的”客户通常会支付这些费用。从我所看到的情况来看,像企业这样的地方通常认为不值得付出努力。
答案 7 :(得分:0)
我知道一些虚拟机软件(至少是VMware)具有允许软件检测虚拟化的功能。但是没有万无一失的方法,无论如何都可以修补这些功能。还可以使用神秘变化的性能(由于主机中的CPU峰值),可靠性是值得怀疑的。有太多“被虚拟化的迹象”,但它们往往不是100%可靠。
答案 8 :(得分:0)
这是一个问题,任何精明的用户都可以击败你所做的任何事情。不熟悉的用户可能会被VmWare的播放器等行为所困扰,这些播放器在移动虚拟机时会更改MAC和其他ID,大概就是对这类问题的认可。
最佳解决方案可能是使用许可证服务器,因为该服务器将计算活动许可证的数量。节点锁定更容易失败,并且使用服务器也倾向于将责任推到IT部门,与仅希望尽快完成工作的个人用户相比,该部门对不破坏许可协议更敏感。
但最后,我同意这一切都归结为适当的许可语言,让您有信任的客户。如果你认为人们以这种方式愚弄你,你就不应该首先向他们出售你的软件......
答案 9 :(得分:0)
如果要求将您的软件安装在VM上,那么这个概念怎么办?
或者更好的是,让主机程序以某种方式直接与VM中的软件通信。
这不是一个好的解决方案吗?不如使用硬件密钥(例如Yubikey)安全,但是您必须精通技术才能破解它...?