3

我正在开发一些我最终要出售的软件。我一直在考虑不同的复制保护机制,包括自定义和第 3 方。我知道没有任何复制保护是 100% 完全证明的,但我至少需要尝试一下。所以我正在寻找一些关于我正在考虑的方法的意见:

我正在考虑的一种方法是让我的软件在启动时连接到远程服务器,以便根据以太网端口的 MAC 地址验证许可证。

  • 我不确定服务器是否会运行检索许可证信息的 MySQL 数据库,或者什么...有更简单的方法吗?也许某种类型的加密文件被读取?
  • 如果软件无法连接到服务器,我会让它仍然工作。我不想仅仅因为他们当时无法访问互联网而将他们拒之门外。如果您想知道,我正在开发的软件非常依赖互联网/网络。因此,用户在使用它时实际上不太可能无法访问互联网。实际上,如果没有互联网/网络访问,它就毫无用处。
  • 任何人都知道我会如何处理具有多个 MAC 地址的计算机?现在很多主板都有 2 个以太网端口。大多数笔记本电脑都有 1 个以太网、1 个 wifi 和蓝牙 MAC 地址。我想我可以选择一个 MAC 端口并使用它运行。不确定这是否真的重要
  • 聪明而狡猾的用户可以确定软件正在连接的服务器,并可能将其添加到他们的主机文件中,以便它始终尝试连接到 localhost。你认为这种可能性有多大?你认为软件是否可以检查这是否正在完成?我想解析主机文件总是可以的。在那里寻找您的服务器地址,看看它是否连接到本地主机或其他东西。
  • 我考虑过加密狗,但我试图避免它们只是因为我知道使用它们很痛苦。让他们保持更新并可能要求客户运行他们自己的许可证服务器对我来说有点太多了。我经历过,我不想让我的客户经历这有点痛苦。此外,我试图避免使用 3rd 方加密狗的额外开销成本。
  • 此外,我倾向于连接到远程服务器以验证身份验证,而不是仅仅向用户发送某种许可证文件,因为当用户购买新计算机时会发生什么?我必须向他们发送一个可以在他们的新计算机上使用的替换许可证文件,但他们仍然可以在他们的旧计算机上使用它。我无法在不要求他们在其上运行某些程序或其他东西的情况下“取消授权”他们的旧计算机。
  • 另外,重要的一点是,对于该软件,我会向 EULA 中的用户明确说明该软件连接到远程服务器以验证许可,并且不会发送任何个人信息。我知道我不太喜欢在我不知道的情况下做那种事情的软件。

无论如何,只是为可能走这条路的人寻找一些意见。

看起来依赖远程服务器的软件将是最有效的复制保护机制之一,不仅因为难以规避,而且在开发人员端管理许可证也很容易。

4

1 回答 1

3

请记住,如果有人想盗版您的软件,他们会的。通常,他们甚至不费心模拟许可证服务器,他们只是jmp在所有许可证检查代码周围插入一个。您可以使这变得更加困难(自我修改代码、到处检查、直到许可证检查成功才交付的代码等),但它成为执行许可证的全职工作。

您正试图阻止休闲海盗,这很好。向许可证服务器发出简单的 HTTP 请求,使用哈希中的许可证代码和 MAC ID 是一种合法的方法。有一种简单的方法可以“取消注册”计算机(在计算机之间移动许可证或将其安装在某人的笔记本电脑上是合理的),一旦发生变化,不要进行硬锁定。体面的模型是 iTunes DRM(5 台计算机、取消授权和全局重置)和 Windows(基于计算机差异的模糊因素)。

如果软件无法通过互联网访问或组织不喜欢它,一般做法是在客户网络上拥有一个许可证服务器来管理授权部分。已经为此建立了中间件(FlexLM 等)。维护许可证服务器是大多数 IT 部门不愿接受的 PITA,因此,如果您可以利用现有基础架构,您的解决方案就会变得越容易接受。

于 2010-06-16T22:55:04.250 回答