2012-01-09 258 views
12

对于我目前的应用程序,我使用一个非常简单的方案来注册新用户。当一个新用户注册一封电子邮件时用一个密钥发送。要检查这个密钥是否正确,计算一种校验和(3-7-11数字检查),该密码被添加为密钥的最后两位数字。没有检查密钥的进一步有效性。应用程序不检查密钥是否失效。如何在Delphi中生成用户注册码?

这是一个简单的方案,有人花时间通过反汇编代码来破解它。我想为我的新应用程序使用另一个方案,但我不确定最佳方法是什么。

  • 是否有我可以使用的Delphi库?
  • 建议在密钥中使用一些用户提供的信息,如他的名字?
  • 是否有注册用户的最佳实践方式?
  • 还有什么我忘记了?

某些注册方案要求应用程序每次在网络服务器上检查密钥是否仍然有效。我宁愿不去那么远,因为这需要服务器端的很多努力。

任何建议或链接强大的方式来注册新用户是非常受欢迎的。

+0

你想做什么?注册用户很容易;只需将它们保存到您的数据库。你想要有一个许可证密钥用于你的软件? (“激活”它?) – 2012-01-09 19:21:16

+4

无论你做什么,它都会被破解。问题是,这与你有多大关系? – 2012-01-09 19:23:52

+0

@大卫你是完全正确的,它会导致我错过每个非注册产品的钱。这就是为什么我想要有某种保护方式。 – Arnold 2012-01-09 19:57:56

回答

11

更好的注册方案基于非对称密码学(通常是RSA算法)。这个想法是,只有你可以生成一个有效的密钥,而每个人都可以检查一个密钥是否有效(非对称密码术允许这个技巧)。所以当你看到你的程序在一个有效的密钥对种子时,你只是取消了一个给这个密钥的客户的支持。

+0

这听起来很有趣。你有什么链接到算法等? – Arnold 2012-01-09 19:58:50

+2

+1这些特定用途的RSA的示例或链接? – 2012-01-09 19:59:30

+0

客户可以起诉并且有很好的获胜机会! – 2012-01-09 20:00:26

4

Delphi和非Delphi库(即Protexis)可用来保护您的软件 - 请记住几乎所有与C一起工作的东西都可以与Delphi一起使用。但是,复制保护方案可能很难实现。一个简单的密钥可能不起作用,通常它与机器指纹一起使用,以便仅在给定系统上使用它。

一个好的密钥生成器算法应该生成不易预测的密钥,但如果有效的话可以检查。周围有不同的东西,没有“通用”的,取决于你的需求,有些可能还包括激活或期满信息的功能。有些键可以是字符串,其他键可以是整个许可证文件(如Delphi自己使用的那些文件)。无论如何,代码可以被反汇编,以尝试猜测算法,一些技术来混淆它,使它更难以理解可以使用。

此外,一个简单的密钥检查是不够的,因为它可以轻松绕过修补可执行文件。如果你真的需要版权保护,你应该分散检查代码周围的所有内容,也许使用密钥对数据或代码段进行加密和解密 - 无论如何它都不会保护你免受keygen攻击,并且需要更多的代码更改,这并不简单在启动时调用一个函数。

保护级别由您决定。如果你只需要一个简单的注册机制,而且你不介意你的软件被破解,你可以使用一个简单的注册机制。如果你需要更安全的话,那么还有更复杂的。

+0

感谢您的链接。当我看到有人为解散程序而烦恼的时候,我非常惊讶。这让我意识到破解总是可能的,但我可以让他们的生活变得更加艰难。您的提示将有所帮助。 – Arnold 2012-01-09 20:35:00

+0

请注意,硬件指纹会惹恼用户,并生成更多支持电话/电子邮件/票据。因此,与低价位的应用相比,高价值的应用更具吸引力,而低成本应用的每次支持呼叫的利润率(每次销售)会减少一半。 – 2012-01-09 20:38:27

+0

@Arnold,我曾经发现一个使用我的应用程序作为目标的破解教程。虽然这个破解者对我的应用程序非常赞赏,并且描述了它如何对他的破解活动非常有用。 – 2012-01-09 20:40:23

4

如果你的目标是强制人们从互联网上下载一个破解的EXE而不是从互联网上的密钥生成器,那么非对称密码是你的答案。

如果您的目标是能够取消已发布到野外的序列号,限制安装次数或强制用户获得真正的“付费”序列号,那么激活是您的答案。不过,如果他们破解你的EXE,他们可以解决这个问题。

您只能控制到有人破解您的EXE。我们必须接受并继续前进。我们必须找出其他方式与我们的客户联系,比如更实惠的版本,增值支持选项,网络服务以及其他方式来说服用户我们的软件价格合理,并且支付。

在我的最新版本中,我使用了激活,因此序列号是随机生成的,尽管检查是唯一的,并且与电子邮件地址相关联。

毕竟,应用程序只是4.99美元,但没有单独的支持。目标是让它如此实惠,以至于如果他们想要使用它,即使只有一次,这也是一个很好的价值。

+0

这是一个明智的方法,我也在考虑更低的价格,但20美元对于复杂的应用程序来说并不多。到目前为止,我使用激活,但决定调查替代品,因此这个问题。感谢您的考虑。 – Arnold 2012-01-09 21:42:48

2

我们已经使用了Oreans的WinLicense两年了,并且非常满意。他们处理密钥生成(使用用户名嵌入),超时的试用版本,硬件密钥(您发送密钥的密钥对其计算机是唯一的)以及虚拟机检测。他们还使用各种其他技术使代码难以反汇编,包括将您选择的代码封装在它们提供的加密VM中。

如果您确定它们“被盗”,您也可以禁用特定的键。完成此操作后,您提供的未来更新将不再使用这些密钥运行。

我们也有我们的软件“电话回家”在某些时候,看看他们的钥匙是否被盗。

任何保护计划都可以被一个有足够决心和技能的人打破。但是,我们对WinLicense给我们的安全程度感到满意。他们的支持也是优秀。这个库可以从Delphi中调用。