我开发了一个小软件。我想提供并仅在商业上运行它。我想让它在从我那里购买它的机器上运行。
如果有人从我的客户端计算机上复制它并在下一台计算机上运行它,我想停止运行/运行该软件。
有什么方法可以防止盗版我的软件?
答案 0 :(得分:6)
改编我以前的一个答案:
有几种方法可以“激活”复制的软件,试图阻止随意复制应用程序。
在最简单的情况下,可能通过您的网站向您购买注册码(“CD密钥”),并将其发送给将其输入程序或安装程序的用户。整个过程基本上可以离线完成;程序本身在本地确定代码有效或无效。
这很简单,但它极易受到密钥共享的影响 - 因为没有“打电话回家”,应用程序无法知道成千上万的不同的人都在使用他们从互联网或串行库获得的相同密钥或者他们的朋友。制作“keygens”也很容易,这些“keygens”会生成从未实际由开发人员发布的有效看似密钥。
然后我们进入在线注册。您仍然拥有某种代码,但程序将回拨给服务器以确定代码是否有效且通常是唯一的。这会停止基本密钥共享,因为公司知道来自世界各地的太多人都使用相同的密钥。也许使用MAC地址也需要某种识别,在同一硬件上允许无限注册,但在看似不同的计算机上可能只有有限的数量。
这仍然非常简单,并且可以停止简单的密钥共享。实际上,人们将不得不破解软件或伪造服务器响应以超越它。
有时程序本身是部分/大部分加密的,只能通过在线注册步骤解密。根据这种混淆的程度,破解可能非常困难和耗时。生化奇兵就是一个备受瞩目的例子 - 采用全新的加密/复制保护方案首次亮相,该方案需要大约两周的时间才能完成。
最后,一个特别保护的应用程序可能会与服务器保持持续联系,如果断开连接则拒绝工作。
如果您确定所有用户都拥有可靠的互联网连接,则可以将其视为保护应用程序的一种强有力的方式,但代价是隐私和某些用户对间谍软件的不信任。
在这种情况下,要绕过激活,他们需要伪造服务器本身。 Steam模拟器和私有WoW服务器就是一个例子。 最后,没有什么是不可摧毁的。
答案 1 :(得分:1)
简而言之:你做不到。
即使是非常软化的系统(例如加密狗密钥)也可以被规避。 我想你最好的电话是给你的客户提供一个代码并在线检查该代码,这样它就不会被使用两次了。
当然,这也可以规避,但......
答案 2 :(得分:1)
正如尼科所说,你真的不能。
一个简单的解决方案可能是生成(注册/激活)代码,这些代码基于特定计算机上安装的硬件或软件 - 例如视频卡序列ID或c:/ windows创建时间。
答案 3 :(得分:1)
我有一个想法可能是有效的。 我们可以做什么,我们将制作一个被破坏的数据库字段,并且该字段将首次为空,只要我将软件安装到某台机器上它就会读取Mac地址+母板序列号+处理器ID并设置一个值结合这三个并写入我第一次使用的空白区域。
之后每次我的应用程序将读取这三个值并以相同的方式重新创建encrupptted值并与该数据库字段的值进行比较。如果数据库字段的值和重新生成的encrroupted字段的值相等,这意味着计算机是相同的,它安装在某些其他机器上,在这种情况下,您删除所有代码,并可能使系统不稳定,以惩罚人也:) 请告诉我您对此想法的看法。
答案 4 :(得分:0)
最好的方法是使用某种硬件锁定,其中许可证代码包含有关运行它的机器的加密信息。然后,您的软件将检查此信息并将其与当前计算机匹配,如果匹配成功,则认为该许可证有效。
当然,任何计划都可能被地球上的某个人破解,但这并不意味着你不应该使用保护计划。
如果您正在寻找现成的方案,请查看CryptoLicensing。
答案 5 :(得分:0)
像我们这样的公司(Wibu-Systems),Safe-Net和Flexera(昂贵)提供无加密狗解决方案以及基于硬件的解决方案。但是_simon是正确的,因为加密狗是唯一的铁保护。所有基于软件的系统都可以被破解;只是有些比其他人更难。真正好的基于硬件的解决方案实际上是无法破解的。除非实施有缺陷,否则没有人破解CodeMeter棒。