在某些程序上,您可以在演示期间运行它们,例如“十个任务”或“5 小时”,然后您才需要决定购买它们以继续使用它们,但如果您删除并卸载该程序然后重新安装它,它知道它以前已安装,不会让您再次运行演示。
它是如何做到的?当您下载它时,它是否会向 CDN 发送一个识别号(IP?),让它知道您以前下载过它,或者当程序本身安装时,它会检查以查看以前安装的痕迹吗?
在某些程序上,您可以在演示期间运行它们,例如“十个任务”或“5 小时”,然后您才需要决定购买它们以继续使用它们,但如果您删除并卸载该程序然后重新安装它,它知道它以前已安装,不会让您再次运行演示。
它是如何做到的?当您下载它时,它是否会向 CDN 发送一个识别号(IP?),让它知道您以前下载过它,或者当程序本身安装时,它会检查以查看以前安装的痕迹吗?
大多数“演示”软件通过从恶意软件中借用的功能来做到这一点:不完全卸载。卸载时不会删除属于该软件的文件或注册表项。重新安装时,软件会看到剩余部分并可以对其进行操作。
这种剩余部分经常使用的隐藏位置是系统目录(在 UAC 到达之前),但许多注册了一些类 GUID - 我知道没有人真正了解注册表中的哪些类是真实的或不是真实的。
我的软件在用户系统中放置了面包屑,用于检查以前的安装。这比互联网检查您的 IP 更难解决(假设您不知道您在寻找什么或在哪里)。因为您总是可以欺骗您的连接信息,或者只是在安装时断开与互联网的连接。
有很多方法可以实现这一点。
最简单的实现方式(也是最简单的绕过方式)
使用图像差异工具,这种方法很容易识别和克服。
最难克服或绕过的方法是使用服务器。在第一次运行时,根据用户计算机名称、驱动器序列号等生成哈希码,并将其发布到您的服务器。然后,服务器将此作为唯一安装进行跟踪,并允许应用程序运行。每次运行应用程序时,都会更新服务器。这样,用户就无法找到面包屑并删除它们,因为它们在您的服务器上。不利的一面是,此方法需要 Internet 连接。
可能有更复杂的方法可以实现此结果,但以上都是我遇到的两种实现。