0

我有一个带有序列码验证的软件。起初我想制作一个配置文件并将序列号等存储在那里。这对我来说效果不佳,因此我将其更改为将名称、序列号和到期时间保存在 Windows 注册表中。

到目前为止它运行良好,但我担心用户可能会发现它并简单地从注册表中删除该条目;这样做将删除过期并允许他们再次使用试用版。

存储用户名、序列号和到期日期的其他好地方是什么?

谢谢

4

4 回答 4

4

我会为您省去麻烦并告诉您,无论您在用户的计算机中存储或修改什么,有经验的用户都将能够撤消 - 是的,这将允许用户再次访问您的试用软件。最坏的情况是,他们可以在安装试用版之前使用虚拟机并拍摄 VM 的快照。

我会更进一步,提到大量用户会对显示类似 rootkit 行为的程序(这里有索尼粉丝吗?)并试图隐藏在他们操作系统的每个角落和角落的程序感到非常恼火。让您的软件电话回家或在您的服务器上存储个人信息(例如操作系统序列)至少是一种不好的形式——如果您在没有通知用户的情况下这样做也可能是非法的。

底线:不要试图为营销问题寻找技术解决方案。使您的完整版本足够吸引用户购买。相信你的用户是合理的,而不是不分青红皂白地认为他们是潜在的窃贼。而且,为了insert-favorite-deity的缘故,不要弄乱他们的电脑......

如果您提供非常昂贵的软件,您可能需要考虑硬件密钥 - 只要您以某种方式确保即使您的业务放弃支持,它们也能在 10 年内继续工作。一方面,我讨厌惩罚软件合法用户的反盗版措施。

于 2011-07-11T21:34:46.000 回答
1

理论上,没有办法阻止用户强行延长免费试用期。事实上,用户可以弄乱系统时钟,甚至使用具有快照功能的虚拟机。

对您的问题的简短回答概括为“默默无闻的安全性”。您将不得不在有创意的地方编写看似无辜或奇怪的文件或注册表项,并且您必须对这些位置保密。您还应该打乱您想要存储的信息(例如姓名、序列号),以便用户无法执行全文搜索来查找它的存储位置。

如果您想更有创意,您可以以某种方式填充一些系统文件(可能像 notepad.exe)并将您的秘密有效负载存储在那里。

此外,您可以通过 Internet 让软件电话回家;您可以检查时钟攻击;您可以尝试将数据存储在磁盘分区的空闲空间中。

于 2011-07-11T21:36:20.463 回答
1

我建议您将其存储在一些专门加密的文件中,或者自行修改某些资源或应用程序文件本身。

为了获得良好的保护,应用程序产品(可执行文件)正在使用特定算法进行压缩,这些算法在运行时提取到内存等中。例如,使用 UPX 及其变体。

大公司开发自己的保护措施,但实际上,当逆向工程师开始他/他们的工作时,通过给定的逆向方法压倒任何防御是正常的(预期的)。

关键是要尝试隐藏有效序列匹配的算法,如序列加密、文件或注册表等。

例如,您可能将您的序列号放入文件中,并在其中根据文件创建日期时间进行哈希处理。但是当有人反汇编你的可执行文件时,当他看到整个画面时,根据你的场景复制一个注册机并不是什么大不了的事。:)

正如 thkala 所说,您必须专注于赢得客户,因为您可能没有像大公司那样投资安全的资源。

于 2011-07-11T21:40:35.650 回答
0

我经常看到的另一种编写试用软件的有效方法是要求用户在线注册并接收软件的临时注册码。尝试在没有某种外部组件的情况下实施试用期通常会变得不那么可靠。

于 2011-07-11T21:43:05.967 回答