使用加密文件的应用程序复制保护

Application copy protection using encrypted files

我正在开发一个桌面应用程序,我想在某个时候开始销售它,所以我开始将许可数据(例如:开始日期、许可期限等)放在一个加密文件中,在应用程序的运行时它解密文件并获取许可证数据以检查它。

问题是这种方法是否足以进行复制保护?

这个问题很宽泛,但简短的回答是:这取决于您的威胁模型。由于应用程序必须解密该文件以检查其内容,因此该文件必须位于客户端计算机上(连同解密密钥),因此如果有人想要破解它,他们将有机会使用它。 (他们可以将调试器附加到您的进程并跟踪处理保护的代码,然后只是修补您的可执行文件或弄清楚如何生成有效的许可证文件。还有其他我什至没有想到的可能方法。 )

如果您认真对待保护您的软件 您认为您的程序会如此受欢迎以至于很多很多用户会尝试盗版它,购买专业的解决方案 - 您将获得有关设置的专业建议,并且该保护可能已经在其他产品中进行过测试。

如果太贵,re-evaluate是否需要版权保护。大多数 home-brewed 方案都可以在短期内破解,它们最终会惹恼您的合法用户,这可能会让您头疼不已。您必须支持您的保护方案,并随着产品的发展不断更新。在 user-friendly 和 hard(-ish)-to-crack 的同时保持许可证向后兼容是很棘手的。

一个可能的解决方案是执行 over-the-internet 许可证检查,但这有其自身的缺点,而且它也不是 cracker-proof。如果您致力于推出自己的保护方案,请准备好编写大量 大量复杂代码 ,全部使用 C 或 C++。 (C# 可以使用免费的开源工具进行反编译。)

在这样做之前,问问自己:将时间花在新功能上而不是花在不会改进应用程序本身的许可代码上会更好吗?