用于发现VM是否已复制/是否已在VM中安装软件的技术

时间:2013-10-03 13:58:31

标签: .net virtual-machine copy-protection

我的情况是这样的:如果许可文件从一个位置复制到下一个位置,我们就拥有一个许可成功停用的产品。这也适用于PC。但是,我们刚刚发现了一个不能按预期工作的用例:如果软件在VM中获得许可,并且第二次复制并加载VM,则可以解决许可证复制保护问题,因为软件认为它仍然存在同一系统的一部分。有哪些技术可用于识别软件是否安装在虚拟系统中,以及是否已复制该VM以绕过复制保护?

我知道这是一个相当广泛的问题,但我并不是在寻找如何实现复制保护的确切方法。我正在寻找有关如何检测虚拟机存在的经过验证的技术,以及要检查的内容,以确保VM本身未被复制。

如果我没有在正确的地方提出这个问题(StackOverflow是否有一个广泛的Q& A讨论部分而不是一个空白的“问题得到答案”格式?),请将其移到适当的位置。

1 个答案:

答案 0 :(得分:1)

您可以使用VMware API查找在同一ESX服务器(虚拟机管理程序)上运行的VM。我不确定这些是否可以在esx服务器上运行,但如果它们连接在同一个vCenter上,则可能是可行的。此外,还有一些在VM上进行服务发现的方法,这些方法也需要特定服务的支持(在您的情况下,您的软件)。我相信,当服务启动时可以从来宾VM插入挂钩,并且可以从其他虚拟机调用挂钩。

在你的情况下,让我们说当你的程序出现在一个VM中时,你可以插入钩子。并且说,如果VM被复制,并且稍后当您的程序在复制的VM上出现时,请调用钩子以查看该服务是否在另一个VM上运行(您可以与挂钩共享一些密钥,以便新的VM服务可以了解另一个人正在运行相同的密钥)

在我们开发基于虚拟机的项目时,我们已经做了类似的事情。但我现在还不记得确切的细节。

但我认为没有办法弄清楚虚拟机是否正在被复制。