2

好的,我想使用在线激活来保护我的软件。用户将需要互联网连接,并且需要验证他们是否拥有有效的帐户/许可证才能继续使用该软件。所以我的软件会向我的网站发送一些凭据,在那里我将验证并发送回一些东西以允许程序运行或不运行。

这就是问题所在。如何防止有人欺骗我发回的简单的东西,完全绕过我的验证?

两个例子:

  1. 我记得在某处看到一个程序,它允许您监控互联网流量并在流量返回软件之前对其进行修改。我记不起名字了。实际上,在应用程序看到它之前,它是输出和输入计算机之间的中间人。比如你的浏览器发送了一个HTTP请求,这个程序可以拦截它并修改out包,或者反之,一些HTTP网页返回给浏览器,这个程序可以拦截并改变传入的包,然后将它传递给浏览器。

  2. 可以更改 HOSTS 文件以将流量重定向到任何地址。因此,如果有人知道我的验证将返回文本“ok_to_use”或“not_ok_to_use”,并且他们知道我用来验证的 url,那么他们可以使用 HOSTS 文件绕过我网站的 dns 查找,将其重定向到他们的自己的站点,并始终返回字符串“ok_to_use”

第二个例子说明了这个问题。我想我需要以某种方式返回静态字符串以外的东西。显然,我可以加密字符串,但很快就会发现“ok_to_use”等于“7hgx3a”,如果那是始终被发回的相同加密字符串。所以我需要发回一些一直在变化的东西。

编辑/

对于评论/回复说总会有一个最终的 if/then 检查标记许可证是否有效的应用程序:是的,那是真的。我在原始帖子的最后一段中暗示了这样的事情。也许让 web php 发回一些关键功能,这样即使 if/then 被跳过,如果没有执行 web 检查,那么某些功能的算法将不会被下载,并且应用程序将无法工作正确。有人有这种徒劳的想法吗?

4

3 回答 3

3

虽然我基本上同意 Gavin,但这并不是让您的软件容易被最愚蠢和最菜鸟黑客攻击的原因!

好吧,您有很多选择可以从威胁您软件许可机制的人群中删除大部分脚本小子和可能的客户员工。

我按照他们在我脑海中的顺序列出了其中一些:

  1. 您可以将双向 SSL 用于客户端-服务器连接,它有一点编码开销,但您可以确保您已经出售了与您的许可服务器联系的那个版本的软件。您可以通过正确解密发送的许可查询的公钥来识别它。

  2. 您可以发送比 OK_TO_USE 更复杂的令牌,也许是一个数学函数的值,每次被询问时随机返回一个数字。然后可以编写客户端软件,以便识别该数字是否由该特定函数产生。(这可能比单个整数更复杂!)

  3. 至少使用加密!或注册一个证书,以便您的客户端可以验证它是否已联系正确的服务器。

  4. 及时更新您的软件,不时更改许可机制!

最后,软件许可证没有防弹背心!你迟早会被破解,但试着卖更多,然后再被黑。:D

于 2011-03-10T08:59:50.550 回答
2

我个人不会打扰 - 专业软件产品使用了许多不同的复制保护系统,并且每一个都已被破解。

无论您的复制保护系统有多复杂,在二进制文件中的某个位置,您都会检查许可证是否有效,所需要的只是修改这部分二进制文件以始终返回 true。

只需添加一个非常简单的激活系统来阻止人们将其传递给朋友,然后花时间添加新功能以销售更多副本,而不是浪费时间试图阻止专业黑客复制您的软件。

如果他们愿意——他们会的!

于 2011-03-10T08:39:31.737 回答
0

从服务器向客户端发送消息时,您可以使用公钥/私钥保护。这些消息无法更改,您可以放心,响应来自服务器。

您可以检查已经提供您正在寻找的内容的LicenseSpot 。它有:

  • 免费许可组件
  • 私钥/公钥加密
  • 用于集成您的应用程序和在线商店的 API
  • 序列号生成
  • 吊销许可证
于 2011-03-11T14:58:58.733 回答