4

我开发了一个小软件。我只想在商业上提供和运行它。我希望它在从我这里购买它的机器上运行。

如果有人从我的客户计算机上复制它并在下一台计算机上运行它,我想停止运行/运行该软件。

有什么方法可以防止盗版我的软件?

4

6 回答 6

6

改编我之前的一个答案:

有几种方法可以“激活”复制的软件,以尝试停止随意复制应用程序。

在最简单的情况下,可能通过您的网站向您购买注册码(“CD 密钥”),然后将其发送给将其输入程序或安装程序的用户。整个过程基本可以离线完成;程序本身在本地确定代码是有效还是无效。

这很好也很容易,但它极易受到密钥共享的影响——因为没有“打电话回家”,所以应用程序无法知道成千上万不同的人都在使用他们从互联网或串行图书馆或他们的朋友中获得的相同密钥. 制作“keygens”也相当容易,它生成看似有效的密钥,而开发人员从未真正发布过这些密钥。

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

这仍然很容易,并且停止了简单的密钥共享。人们实际上必须破解软件或伪造服务器响应才能通过它。

有时程序本身是部分/大部分加密的,仅通过在线注册步骤解密。根据混淆程度的不同,破解它可能非常困难且耗时。《生化奇兵》就是一个备受瞩目的例子——首次亮相时采用了一种全新的加密/复制保护方案,该方案从发布到被破解大约需要两周时间。

最后,一个特别受保护的应用程序可能会与服务器保持持续联系,如果连接断开,则根本拒绝工作。

如果您确定您的所有用户都将拥有可靠的互联网连接,那么它可以被认为是保护应用程序的一种非常有效的方法,但会牺牲隐私和一些用户对间谍软件的不信任。

在这种情况下,为了绕过激活,他们需要伪造服务器本身。Steam 模拟器和私人魔兽世界服务器就是一个例子。最后,没有什么是不可破解的。

于 2010-05-16T10:10:42.397 回答
1

简而言之:你不能。

甚至可以绕过非常复杂的系统(例如加密狗钥匙)。我想你最好的电话是给你的客户一个代码并在线检查该代码,这样它就不能被使用两次。

当然,这也可以被规避,但是......

于 2010-05-16T09:48:06.897 回答
1

正如尼科所说,你真的不能。

一个简单的解决方案可能是生成(注册/激活)代码,这些代码基于安装在特定计算机上的硬件或软件 - 例如视频卡序列号或 c:/windows 创建时间。

于 2010-05-16T10:00:25.370 回答
1

我有一个想法可能是有效的。我们可以做什么,我们将创建一个损坏的数据库字段,当我将我的软件安装到某台机器上时,该字段将首次为空,它将读取 Mac 地址 + 主板序列号 + 处理器 ID 并生成一个损坏的值结合这三个并写入我第一次使用时留空的那个字段。

之后,每次我的应用程序都会读取这三个值并以相同的方式重新创建加密的值,并与该数据库字段的值进行比较。如果数据库字段的值和重新生成的encrroupted字段的值相等,这意味着计算机是相同的,否则它安装在其他机器上,在这种情况下你删除所有代码,可能会使系统不稳定以惩罚人也:) ...请让我知道您对这个想法的看法。

于 2013-10-05T09:06:38.940 回答
0

最好的方法是使用某种硬件锁定,其中您的许可证代码包含有关它将在其上运行的机器的加密信息。然后,您的软件将检查此信息并将其与当前计算机匹配,如果匹配成功,则认为许可证有效。

当然,任何计划都可以被地球上的某个人破解,但这并不意味着您不应该使用保护计划。

如果您正在为此寻找现成的方案,请查看CryptoLicensing

于 2010-05-20T10:18:17.247 回答
0

我们(Wibu-Systems)、Safe-Net 和 Flexera(昂贵)等公司提供无加密狗解决方案以及基于硬件的解决方案。但是 _simon 是对的,加密狗是唯一的铁皮保护装置。所有基于软件的系统都可以破解;只是有些比其他更难。真正好的基于硬件的解决方案实际上是无法破解的。除非实施存在缺陷,否则尚未有人破解 CodeMeter 棒。

于 2011-03-23T20:19:01.633 回答