首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何保护应用程序免受虚拟机复制

如何保护应用程序免受虚拟机复制
EN

Stack Overflow用户
提问于 2008-09-26 06:58:13
回答 6查看 18.8K关注 0票数 21

我们使用硬盘和CPU ID等标准项将软件许可证锁定到物理硬件。我们如何才能降低客户在虚拟机上安装后再克隆该虚拟机而绕过我们的许可的风险?

EN

回答 6

Stack Overflow用户

发布于 2013-11-21 04:10:41

一种方法是使用许可服务器。当您将许可证代码输入客户端(在虚拟机上)时,它会联系服务器并向其发送许可证代码和其他信息。它反复联系它(您定义时间间隔--可能每隔几个小时一次),询问“我是否仍然有效”?与此请求一起,它发送一个唯一ID。服务器回答“是的,您是有效的”,并将一个新的唯一ID发送回客户端。客户端将此唯一ID与其下一次请求一起发送回服务器。服务器验证此ID是否与它为该许可证发送到客户端的ID相同。

如果VM被复制,则下次它询问服务器“我是否有效?”时,唯一ID对于它或其他VM都将是不正确的。两者都不会继续工作。

您需要确定如果服务器出现故障或网络出现故障,从而导致客户端无法与服务器通信时该如何处理。你会立即禁用你的软件吗?馊主意!不要让你的客户生气。你会想给他们一个宽限期。这应该是多长时间?几天?几周?

假设你给他们一个月的宽限期。理论上,他们可以在输入许可证密钥后克隆父虚拟机,然后在宽限期即将用完之前将其他虚拟机恢复到此克隆,从而禁用对它们的网络访问。不过,对于你的客户来说,这将是一个麻烦,仅仅是盗版你的软件的额外副本。你必须确定什么样的宽限期不会困扰你的合法客户,同时希望能给你你所寻求的保护。

通过验证VM的时钟设置是否正确,可以实现额外的保护。这将阻止上述盗版方法。

另一个考虑因素是,精明的用户可以编写自己的许可服务器来与VM实例通信,并告诉它们所有的“你很好”--因此加密通信可以帮助阻止这种情况。你想在这里走多远,实际上取决于你认为盗版在多大程度上可能是你客户的问题。最终,你将无法阻止真正的盗版者,他们有时间,但你可以让诚实的用户诚实。

票数 9
EN

Stack Overflow用户

发布于 2008-10-07 18:08:04

您需要一些计算机“硬件”之外的东西来进行身份验证。大多数公司选择硬件密钥(加密狗)作为软件的硬件密钥(加密狗),成本很高,用户可以忍受。

其他公司使用在线方法-如果多个具有CPUID和其他硬件的用户同时使用给定的许可证,则不允许另一个实例化,或关闭现有的实例化。

你必须根据你的需求和消费者跳过反盗版的意愿来选择保护措施。

-Adam

票数 2
EN

Stack Overflow用户

发布于 2008-09-26 07:26:08

如果您的软件在VM下运行,那么它将在任意数量的克隆VM下运行。因此,唯一的选择似乎是完全阻止它在VM下运行。这里有一篇关于虚拟机检测的文章:Detect if your program is running inside a Virtual Machine和一篇关于thwarting it的文章。

顺便说一句,克隆VM通常很麻烦,可以阻止临时用户绕过您的许可,而那些致力于破解的地狱可能无论如何都会找到绕过它的方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/138081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档