我想在我的应用程序中包含某种类型的复制保护方案,这将使零售注册版本的软件恢复到我的软件的试用版本,如果/当它被安装在另一台计算机上。
在过去,我会简单地将所有用户信息存储在我附加到exe文件末尾的记录中。在注册过程中,我会简单地将这些值插入到exe文件末尾的数据记录中。这个方法非常有效,直到诺顿开始将我的产品标记为病毒,因为exe文件发生了变化。
我很久以前就不那么做了。我正准备为我的软件创建一个更新版本,我想知道你是如何完成的。使其成为零售版本的信息应该存储在目标计算机上,而不是原始程序中。这样,当他们试图移动程序时,它会恢复到试用版本,因为新计算机上丢失了零售信息。
零售信息是通过注册过程添加的,使用唯一的密钥。有许多方法可以使此密钥只工作一次。一种方法是通过互联网直接传输到程序中,用户永远不会看到它,因此他们无法手动将其传输到新计算机上。
您应该将信息保存在多个位置,以尽量减少精明的用户发现它的机会(例如使用Process Monitor)。我建议
- 香港大学的注册表项及
- 本地应用程序目录中的隐藏文件。
也保存一些绑定到本地计算机的信息,所以即使如果普通用户发现你的文件和注册表项复制不会成功,因为他们不知道如何在新PC上获得更新的数据。此信息也可以是您根据用户必须发送给您的某些硬件ID生成的密钥。
关于密钥生成算法:如果保护是"针对"普通用户,那么就编一些东西。这一点取决于你的目标群体。像ROT47这样简单的代码就足够了。
也许你可以用同样的方法。
除了将数据保存在exe中(调用AV的假阳性)哈希并将数据保存在单独的文件中。