Closed. This question is
opinion-based。它当前不接受答案。
想改善这个问题吗?更新问题,以便
editing this post用事实和引用来回答。
5年前关闭。
Improve this question
我正在开发一些最终要出售的软件。我一直在考虑不同的复制保护机制,包括自定义和第三方。我知道没有版权保护是100%完整的证明,但是我至少需要尝试一下。因此,我正在寻找有关我正在考虑的方法的一些意见:
我正在考虑的一种方法是,在我的软件启动时将其连接到远程服务器,以根据以太网端口的MAC地址验证许可证。
我不确定服务器是否正在运行检索许可证信息的MySQL数据库,或者...有没有更简单的方法?也许读取某种类型的加密文件?
如果软件无法连接到服务器,我将使其继续运行。我不想因为某人当时无法访问互联网而将其拒之门外。如果您想知道,我正在开发的软件非常依赖Internet /网络。因此,实际上用户使用互联网时不太可能无法访问互联网。实际上,如果没有Internet /网络访问,它就毫无用处。
有人知道我会对具有多个MAC地址的计算机怎么办吗?如今,许多主板都有2个以太网端口。大多数笔记本电脑都有1个以太网,1个wifi和蓝牙MAC地址。我想我可以选择一个MAC端口并运行它。不确定是否真的重要
一个机灵而狡猾的用户可以确定该软件要连接到的服务器,并且可以将其添加到其主机文件中,以便它始终尝试连接到本地主机。您认为这有多大可能?您是否认为该软件可以检查是否已完成?我猜主机文件的解析总是可以的。在此处查找您的服务器地址,并查看其是否连接到本地主机。
我已经考虑过加密狗,但是我正试图避免它们,因为我知道使用它们很痛苦。对他们进行更新,可能需要客户运行自己的许可证服务器,这对我来说有点太多了。我已经经历过了,我不想让我的顾客感到痛苦。另外,我也在努力避免使用第三方加密狗的额外开销。
另外,我倾向于连接到远程服务器以验证身份,而不是仅仅向用户发送某种许可证文件,因为当用户购买新计算机时会发生什么?我必须向他们发送一个替换许可证文件,该文件将与他们的新计算机一起使用,但是他们仍然可以在其旧计算机上使用它。在没有要求他们在旧计算机上运行某些程序的情况下,我无法对其进行“取消授权”。
另外,重要的一点是,对于该软件,我将在EULA中向用户明确表明该软件已连接到远程服务器以验证许可,并且不会发送任何个人信息。我知道我不太在乎我不知道的软件,这些东西确实可以做到。
无论如何,只要为可能已经走过这条路的人寻找一些意见。
似乎依赖于远程服务器的软件将是最有效的复制保护机制之一,这不仅是因为难以规避,而且还很容易在开发人员端管理许可证。
请记住,如果有人想盗版您的软件,他们会的。通常,他们甚至不必费心模拟许可证服务器,只需在所有许可证检查代码周围插入jmp
。您可以使此操作变得更加困难(自我修改代码,检查各处,在许可证检查成功之前不会交付的代码等),但是它成为执行许可证强制执行的全职工作。
您正在尝试阻止海盗,这很好。向许可证服务器执行简单的HTTP请求,并在哈希中添加许可证代码和MAC ID是合法的方法。有一种简单的方法可以“注销”计算机(将许可证在计算机之间移动或将其安装在某人的便携式IMO上是合理的),并且一旦发生更改,就不要进行硬性锁定。体面的型号是iTunes DRM(5台计算机,取消授权和全局重置)和Windows(基于计算机差异程度的模糊因素)。
如果该软件无法通过Internet访问或组织不喜欢它,则通常的做法是在客户网络上安装一个许可证服务器,以管理授权部分。已经为此建立了中间件(FlexLM等)。维护许可证服务器是大多数IT部门都不愿采取的PITA,因此,如果您可以使用现有的基础架构,那么您的解决方案就变得更加容易接受。
我是一名优秀的程序员,十分优秀!