0

在我的应用程序中,我将使用在线激活来控制盗版。但问题是,一旦用户激活软件,我如何检测到该应用程序已激活。有没有办法存储该应用程序被激活的数据。不要告诉我注册表,因为这种方式不安全。任何与在线激活相关的信息都会对我有所帮助。我决定在系统驱动器中创建文件,并且我的应用程序每次启动时都会检查该文件。如果找到了文件应用程序启动,如果没有,那么它会要求密钥。那安全吗?任何建议都会很好!

4

2 回答 2

2

您提到的问题是您需要考虑的问题,但还有很多其他问题:

  • 用户如何在没有网络连接的系统上激活许可证?
  • 如果您遵循对每个许可证进行节点锁定的标准做法(自动读取一些系统参数,例如 MAC 地址、主机名、硬盘 ID 等)并在运行时检查这些,您将如何适应升级其系统的用户等导致这些参数之一改变?
  • 如果用户想要将其许可证重新定位到不同的系统,例如将其从台式机移动到笔记本电脑或新系统,该怎么办?
  • 那些打电话给你的用户(他们会)说:“求助,我的系统崩溃了,所以我需要让我的许可证在另一台机器上运行?”
  • 如果您正在使用激活系统设置许可证时间限制,例如试用许可证为 30 天或订阅为一年,您如何防止用户试图通过错误设置系统时钟来作弊呢?他们激活他们的许可证还是在激活之后?
  • 如果您决定提供不同版本的应用程序怎么办?您的激活系统可以管理吗?例如,根据每个用户的激活许可证启用或配置产品功能,但全部来自一个可执行文件
  • 报告激活的许可证怎么样 - 您的服务器是否捕获激活的许可证的数据并提供报告、警报等?
  • 如果有人想购买一个池,比如 20 个许可证怎么办?您是否必须提供 20 个不同的激活 ID,或者您是否可以提供一个 ID 以允许激活 20 个许可证?

只是根据多年在该领域的经验需要考虑的一些事情。

于 2011-07-06T18:57:53.307 回答
0

我可以看到对“保护激活数据”有两种不同的看法:

1)如果您试图保护用户的激活数据,以便用户无法将数据复制到另一台计算机并在那里使用该软件,我建议以下协议:

在激活期间,用户环境的唯一标识特征被散列并发送到激活服务器。激活服务器生成使用密钥签名的激活。在产品启动时,您的产品验证激活是否由您的服务器签名(使用服务器的公钥),并且本地环境散列到激活中包含的相同签名值。如果它失败了,那么环境要么已经改变(操作系统的新安装?),要么数据已经迁移到一个新的环境,需要(通过它的声音)一个新的许可证/激活。无论哪种方式,用户都需要重新激活。

2) 如果您试图保护激活数据免受损坏,请考虑使用逻辑补充以前的协议,如果客户尝试使用相同的 UID 重新激活,允许再次激活,这应该会导致相同的激活实例被发回给客户。

这些都是即兴的,我不保证其中任何一个都是防弹的。另外,请记住,盗版者只需绕过验证激活即可成为有争议的问题。

另外,我觉得重要的是要注意,使用此方案的想法是您不必在任何地方隐藏激活信息。您可以将其存放在任何方便的地方。

于 2011-06-26T19:22:42.963 回答