我需要为我的定制软件提供试用期。我有一个 64 位 C# 应用程序,它使用 64 位多处理器支持 DLL。其他要包含的实用程序是用 C++ 编写的(exe 和 dll)。我必须能够加密 C# 代码、将软件加密为仅在特定计算机上运行,并强制执行不能通过重置计算机时钟来阻止的到期日期。
我评估了几种开源和 COTS 解决方案:Infralution Licensing System、Protector 和 ExeShield 仅举几例。它们都不满足我的所有限制。
有人知道我应该考虑的全方位解决方案吗?或者我是否需要进行一些注册表潜水并通过自定义代码强制执行?
经过几年尝试不同许可系统的过程,我发现安全性与潜在客户的疏远之间存在很强的负相关性。
您需要担心的盗版本质上有两种。一种是随意盗版——用户使用该软件而不付费只是因为他们没有真正考虑过付费。另一种是故意盗版——人们决心不付费,并且愿意付出真正的努力来不这样做。
偶然的盗版基本上可以通过温和的提醒来处理——激活密钥、时间限制等。另一方面,故意的盗版基本上是无法阻止的。正如索尼、苹果、微软、任天堂和许多其他公司会告诉您的那样,即使您拥有对硬件和软件的控制权,您的保护方案will被打破。破坏它的人很可能是为了有趣的挑战,也可能是为了获得免费软件。因此,对于特定人群来说,加强保护并不会阻止他们,反而会起到相反的作用。
与此同时,您为实现强有力的保护所做的所有努力都在驱使合法用户爬墙。也许用系统时钟检测不公正划分的旅程是因为他们改变了时区而开始的。或者也许他们必须更换损坏的硬盘或 CPU 之类的东西,这会引发系统克隆机制。或者,也许 Microsoft 更改了 Windows 的默认安全设置,导致 Windows 在您的应用程序使用时弹出一堆 UAC 警告,因为它对您用来尝试隐藏存储许可数据的文件的某些技巧不友好。在工作中,我们使用商业解决方案,并且我们发现它们的保护机制可能会由于软件中的错误而发生故障,从而导致许可证数据损坏,从而将用户锁定在程序之外。由于他们的系统存储该数据的方式,这是一种无法恢复的情况 - 客户实际上必须在不再在该计算机上使用该软件和擦除硬盘驱动器之间做出选择。是的,这种事已经发生过多次了。是的,我们因此损失了很多潜在收入。是的,一想到它造成的损害我就感到恶心,因为我们主要依赖口碑,而它产生了很多不好的口碑。长话短说,早年对海盗的天真偏执可能让我在加勒比海度过了很多次航行假期。
最糟糕的是,这只是合法用户的问题。如果万不得已的话,破解者可以借助调试器和反编译器轻松地(非常容易地)绕过它。如果该软件位于最终用户拥有的设备上,您可能会开始认为您的软件已经被破解了。正是这样,围绕着人们破解他们合法拥有的软件的想法而建立了一个家庭手工业,只是为了避免软件保护机制的烦恼。他们会给你钱,但他们仍然会破解软件,因为你的复制保护就是那么令人恼火,而且很容易规避。另一种选择 - 这就是我所走的路线 - 就是去购买不那么烦人的不同软件,或者使用免费软件。
因此,请遵循最低限度 - 注意时钟并暂停演示,因为您确实需要提醒用户向您发送支票。但不要以让他们决定不想给你支票的方式去做。如果您的目标是转化销售,请将此视为最优雅、最具成本效益且最高效的系统,可防止用户通过破坏系统时钟来违反演示期:使用具有以下功能的计算机真的非常非常烦人时钟设置为错误的日期。这仅适用于家庭用户。对于(合法的)企业来说,这甚至不是一个可行的选择。任何不被这一点吓倒的人都可能是一个脚本小子,他们从一开始就没有真正有能力为你的软件付费。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)