1

应用程序通常具有注册密钥。可以说它可以放在文件或注册表中。有时,应用程序因输入另一个键或日期的传递等而被停用。在哪里可以安全地存储有关停用应用程序的此类信息?文件不是答案;可以恢复备份副本以解决此问题。注册表是一个薄弱的答案,只是因为大多数人不知道它在那里,也不想恢复它,如果他们这样做了,他们会恢复整个东西,这通常会产生其他令人沮丧的副作用。

在我看来,存储停用信息是绝对不安全的,因为总是可以恢复旧副本。充其量可以通过在隐秘命名的文件或注册表项下进行混淆来隐藏这些数据。

是否有我不知道的标准技巧或 Windows 支持的标准方案来帮助解决这个问题?

第2轮:我已经看到了很多答案。他们都没有特别说“你不能这样做”,但有几个暗示打电话回家是唯一的好选择(“停用”)。

让我们假设打电话回家和加密狗不是答案,并且必须在机器上留下一些东西。在这种情况下,典型的许可方案实际上做了什么?

4

5 回答 5

2

与 Windows/linux 等开放平台上的 iPhone 和其他封闭环境相比,您总是面临着很高的风险,即保护很容易被绕过(本地串行保护),或者会通过反转和修补您的代码而被破解。几乎每一个现代单人游戏都有这个问题。此外,很难找到一种不会让用户太烦恼的解决方案。我们都记得 Sony-CD-Rootkit 灾难,在游戏行业中,它始终是最新的 DVD 保护,它不能按预期的方式在所有驱动器上工作。但你能做什么呢?您可以尝试通常的序列号、回拨选项,并在较新的更新(Adobe、FlashFXP、Windows)中禁止某些序列号。如果您的消费者基础非常低,那么这对您来说可能就足够了。如果 - 无论出于何种原因 - 这不是一个选择,使用您的软件所需的 USB 加密狗怎么样?听说相当多的 CAD 程序使用这个。您可以研究的最后一件事是,为您的应用程序添加水印怎么样?如果它出现在某些 p2p 网络上,您也许能够看到泄漏的位置。基本上没有什么可以为您提供 100% 的保证,但是有一些选项可以让普通用户更加困难......请记住,您的大部分资金应该花在创造出色的产品上,而不是购买大部分无用的保护!

于 2009-06-14T07:03:55.503 回答
1

以下是对不同选项的简短但很好的概述。

http://www.developer-resource.com/how-to-protect-software.htm

于 2009-06-14T08:28:59.153 回答
1

在服务器上创建并签署许可证文件。如果您使用公钥加密,则许可文件不容易被伪造。您的应用程序当然可以被破解为不需要许可证,但那是另一回事。

于 2009-06-14T08:39:04.947 回答
0

是的,你可以加密东西,这就是他们所做的!检查网络上的各种许可方案。甚至微软也有一个......微软软件许可和保护

您可以使用 Microsoft Cryptographic API 来开发您的代码。加上使您的程序集或 dll 变得模糊。强制用户激活。

于 2009-06-14T06:31:46.593 回答
0

所有保护方案都容易受到某种类型的攻击。信息加密确实有助于防止攻击,因为信息以模糊的方式存储,但即使这样也不是牢不可破的。

另一种可能的选择是远程存储实际的激活状态信息,并在机器上留下对该信息的引用,可能是加密的。有很多方法可以做到这一点,但想到的一种方法是存储某种 GUID,然后您可以在数据库中查找

这样做的一个缺点是需要互联网连接,我不知道这是否令人望而却步,但总体思路是从您无法控制的机器上删除激活状态并将其放在您控制的机器上

于 2009-06-14T06:51:35.703 回答