查找是否已从与操作系统映像一起复制的软件安装了映像操作系统



我们能否发现我们的软件是否已经复制到操作系统映像(windows)中,然后部署到另一台机器上?硬件细节确实会改变,但这可能是由于硬件升级或更改。

在软件级别是否有任何指示操作系统映像已安装的内容

p。OS安装日期在映像部署后不会改变。它显示了原始操作系统的安装日期和时间,而不是映像操作系统的日期和时间。

例如,我尝试使用服务标记,uid和操作系统安装日期更改来检测此。我认为硬件和软件的细节结合起来会导致正确的检测。但在硬件升级过程中,操作系统安装日期发生变化,硬件细节发生变化或显示垃圾值。我的软件将被安装在操作系统中。然后操作系统将被映像。我想检测镜像安装

如果您的软件连接到互联网,这是相对容易解决的。你安排'call home':偶尔发送数据包到一个已知的服务器地址,其中包含足够的信息来识别实例。

对于这个目的,UDP数据包服务得很好。你要包括软件的构建、它运行的操作系统、一些简单的硬件细节,比如内存和磁盘的大小、IP地址和MAC地址。从服务器记录的数据包中,您可以很容易地分辨出原始实例与克隆实例,或者在几乎每个实例中都更新了硬件的原始实例。如果您有足够的权限,您还可以通过对硬件的详细检查获得非常独特的信息。

请注意,Windows就是这样做的。如果发现激活的副本在完全不同的机器上运行,则必须重新激活它。"足够不同"的定义没有公开。


要说清楚,我所描述的是一个启发式,而不是一个算法。我假设原始安装创建了一个GUID,克隆版本也使用相同的GUID。当您从包含足够信息的相同GUID的安装中接收数据包时,实际上您将能够在几乎所有情况下区分原始包和克隆包。两个克隆可能一开始是一样的,但很快就会有不同的东西:网络IP地址、磁盘可用空间、活动设备。

这可能不能满足原始问题的所有要求,但它会工作(它已经做到了),总比什么都没有好。

每次计算机启动时生成一个GUID,并包括当前GUID和以前每次向服务器报告时生成的GUID的历史记录。

如果一台机器的报告缺少GUID,那么您就知道该机器已经被克隆,并且应该至少生成一个新实例。您可以通过查找两个实例都记住的最后一个GUID来确定克隆发生的时间。

要确定哪个实例与原来的"同一台机器",如果这很重要,请查找MAC地址或计算机名称的变化。如果有一个实例,在克隆机器之后,这两个实例都没有改变,那么可以假定它是原始的。(如果有多个实例具有相同的MAC地址,则有严重问题;请引起系统管理员的注意,并让他们进行处理。

如果当前实例都没有匹配的MAC地址和计算机名,这可能意味着原始机器还没有重新启动,但最终会启动,或者它已经被销毁,或者它永久脱机,只被用作模板。这也可能意味着,巧合的是,计算机名称和/或MAC地址在克隆机器之后,但在下一个报告之前被更改了。

如何最好地处理这个问题取决于上下文,但在大多数情况下,将原始机器显示为一个单独的实例可能是明智的,即使自克隆发生以来您没有从它获得报告,并让系统管理员在适当的情况下手动删除它。

相关内容

最新更新