软件激活如何工作?

时间:2009-12-09 16:26:26

标签: security deployment

我尝试过搜索,所有问题都与“如何生成密钥”等特定内容有关。任何人都可以解释不同类型的软件激活是如何工作的吗?

3 个答案:

答案 0 :(得分:18)

在最简单的情况下,它描述为maxwell5555。将注册码(“CD密钥”)发送给将其输入程序或安装程序的用户。整个过程基本上可以离线完成;程序本身在本地确定代码有效或无效。

这很简单,但它极易受到密钥共享的影响 - 因为没有“打电话回家”,应用程序无法知道成千上万的不同的人都在使用他们从互联网或串行库获得的相同密钥或者他们的朋友。制作“keygens”也很容易,这些“keygens”会生成从未实际由开发人员发布的有效看似密钥。

然后我们进入在线注册。您仍然拥有某种代码,但程序将回拨给服务器以确定代码是否有效且通常是唯一的。这会停止基本密钥共享,因为公司知道来自世界各地的太多人都使用相同的密钥。也许使用MAC地址也需要进行某种识别,在同一硬件上允许使用infinte注册,但在看似不同的计算机上可能数量有限。

这仍然非常简单,并且可以停止简单的密钥共享。实际上,人们将不得不破解软件或伪造服务器响应以超越它。

有时程序本身是部分/大部分加密的,只能通过在线注册步骤解密。根据这种混淆的程度,破解可能非常困难和耗时。生化奇兵就是一个备受瞩目的例子 - 采用全新的加密/复制保护方案首次亮相,该方案需要大约两周的时间才能完成。

最后,一个特别保护的应用程序可能会与服务器保持持续联系,如果连接被切断,则拒绝工作。在这种情况下,为了唤醒您需要伪造服务器本身的激活。 Steam模拟器和私有WoW服务器就是一个例子。

最后,没有什么是不可摧毁的。

答案 1 :(得分:1)

我怀疑很多实施者都不会提供这些信息,因为它会打开它们进行黑客攻击。但如果我这样做,我就会这样做:

  1. 确定该软件是否已授权给个人或计算机。
  2. 找到识别人/计算机的方法(登录帐户或计算机硬件中的ID)。
  3. 在请求/付款时:在您的私人数据库中,创建一个许可证密钥,并使用此密钥为个人/ PC添加条目。
  4. 为客户端软件提供密钥。
  5. 您的软件要么在本地存储密钥,要么定期检查密钥,为您的服务提供识别信息,以换取您的服务提供密钥(如果有的话)。如果未找到,则您的软件会向他们提供购买许可证的详细信息。后者允许浮动密钥,计算机升级和识别重复安装。
  6. 这就是你要求的吗?

答案 2 :(得分:1)

实现软件激活/注册的一种常见,简单的方法是创建许可证算法。例如,假设我有一些我想保护的共享软件,当有人给我钱时,我发送一个4字节的注册码。我可以将算法构建到我的共享软件中,以便验证用户输入的代码。我的算法如下:

1) Byte0 * Byte1 = 6
2) Byte2 - Byte3 = 1
3) Byte0 + Byte2 = 8

两个可能的有效代码是:

3254
1676

当用户输入有效代码时,软件会通过在某处设置标记来解锁其常规功能。显然,这是一个非常简单的例子。注册验证算法可以像您想要的那样复杂。

您还可以通过互联网执行此注册,以保护您的验证算法免受逆向工程,并防止人们共享密钥。没有验证方案是完美的。