我开发了一些我希望通过许可保护的软件。到目前为止,我已经有代码使用硬件组件的细节为每台机器生成一个唯一的ID。然后,我可以允许激活5台机器对一个单一的串行密钥(每个许可证5台机器就是我所销售的)。
这一切都很好,但显然只能在有互联网连接的机器上运行。这只是这种保护的限制,我无能为力吗?或者我有办法解决这个问题吗?
注意:在这一点上,在这个帖子中,我不会批评关于我生成唯一ID的方式,这是我选择的方法,而且相当无知,需要坚持下去原因有几个。
答案 0 :(得分:2)
我认为你有几种选择:
实施某种自检:每个正在运行的实例将其唯一ID发送到网络中,然后侦听其他正在运行的实例的唯一ID。通过网络接收四个以上唯一ID的第一个实例会自行关闭。我想这可以使用UDP广播来实现。实现这一点并不是那么简单:
如果我要实现类似的东西,我会介绍以下三种包类型:
在所有情况下,您都应该考虑将允许的实例数量编码到密钥中,以便稍后分发不同大小的密钥。
答案 1 :(得分:2)
要求拥有中央许可服务器。启动时的每个程序都向该服务器注册。服务器告诉客户端它是否可以启动。如果5个程序已经启动,程序将拒绝启动。
当程序停止时,它再次告诉许可服务器不再需要它的许可证。
完成工作。不需要互联网。