2013-10-03 72 views
2

我的情况是这样的:我们有一个许可证产品,如果将授权文件从一个位置复制到下一个位置,则该许可证会成功禁用。这也可以很好地跨PC使用。但是,我们刚刚发现了一个用例,该用例不能达到预期的效果:如果软件在VM中获得许可,并且第二次复制并加载该VM,则该软件可以解决许可证复制保护问题,因为该软件认为它仍然存在同一系统的一部分。有什么技术可以用来确定软件是否安装在虚拟系统中,以及该虚拟机是否被复制以规避复制保护?用于发现虚拟机是否已被复制/虚拟机中是否安装了软件的技术

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

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

+0

您无法检测虚拟机映像是否已复制到__。这是意图,你需要一个心灵读者。但即使检测到图像被复制也几乎不可能。这只是一点点。位序列10001是否被复制?如果你不能从5位中分辨出来,你需要多少位? – MSalters

回答

1

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

在你的情况下,可以说当你的程序在一个虚拟机中出现时,你可以插入钩子。也就是说,如果虚拟机已被复制,并且稍后当您的程序在复制的虚拟机上启动时,请调用挂接以查看服务是否正在另一个虚拟机上运行(您可以与挂钩共享一些密钥,以便新的虚拟机服务知道另一个人运行相同的密钥)

当我们在开发一个基于vm的项目时,我们已经做了类似的事情。但我现在不记得确切的细节。

但我不认为有一种方法来确定虚拟机是否得到复制或不复制。

+0

我希望也许我可以获得加载的虚拟磁盘的实际路径,并可能将我们的许可证绑定到该虚拟磁盘上(如果我们处于虚拟环境中) –