我有我的应用程序的许可文件。现在可以破解它并且用户可以无限制访问的唯一方法是每 30 天删除一次许可文件并重新安装程序。
如何最好地保护此文件?(或信息)
我的第一个想法是将文件隐藏在 Windows %AllUsersProfile% 下的某个文件夹深处。并为文件夹使用晦涩的名称,以免宣传该位置。
另一个想法是写入注册表,但我们不能总是像我想要的那样写入 HKEY_Local_Machine,因为它需要管理员权限。
在设置过程中创建许可证文件。并将缺少许可证文件视为无效的许可证文件。卸载、删除文件然后重新安装比仅仅删除文件更烦人。
如果我的系统某处出现带有模糊随机名称的文件,我会讨厌它,因为我想知道我是否感染了病毒,或者它是否只是一些行为不良的软件。
并且不要太努力。让它比从下一个warez站点下载破解或许可证重置工具更难是没有用的。破解者会使用 FileMon 等工具快速找到您的许可证文件。
一个可能实际可行的想法(除了针对修补二进制文件的破解):
修复下载的到期日期并将许可证文件嵌入设置中。这样,他们实际上需要在许可证到期时下载新版本。但当然,您的用户可能会觉得这不可接受或可能不适合您的分发模型......
几乎任何隐藏或隐藏许可证文件的方法都是可以破解的。你真的需要在一些场景中做出决定:
在案例 1 中,一个简单的许可证文件可以帮助您的客户合规。可能没有必要隐藏它或掩盖它。我认为这不是你的情况,因为你发布了这个问题。
在第 2 和第 3 种情况下,您可以做的事情很少会被轻易击败。破解者可用的工具非常强大且广泛可用,以及使用它们的技术。我们公司 ( www.wibu.us ) 有一名全职密码学家,他只关注人们如何破解软件,以便我们可以建立更强大的保护来抵御它。
对于 DIY 解决方案来说,最“正常”的方法可能是使用一些“标准”算法加密许可证文件,例如 AES 128 位或三重 DES。然后从几个因素的哈希中生成密钥,例如 MAC 地址、MB 序列号、安装日期,也许还有一些用户输入数据(“名称”“电话”等)。但是,加密可能会变得复杂,因此您要确保您知道使用这种方法在做什么。
强制应用程序通过端口 80 转到远程服务器,以检查在第一次安装时设置的哈希值,可能是针对 MAC 地址(不是绝对保证,但足够好)。如果他们再次尝试安装,它至少与 MAC 地址相关联,您可以停止安装。
编辑:
如果您的客户群很小并且您有资源支持他们,您可以在没有互联网访问的情况下执行相同的行为,除非客户需要来找您获取许可证文件。他们通过他们的系统生成一个密钥,再次绑定到 MAC 地址,然后将生成许可证文件的密钥发送给您。这当然取决于每天的传出下载次数。
一种解决方案是在许可证文件中嵌入到期日期。如果您的受保护程序没有找到许可证文件,则它是无效的。
所以即使用户删除它也无济于事,它仍然过期了。
在这种情况下,唯一的问题是:您需要在分发许可证文件时修复到期日期。您可以使用其他技巧(定期重新分发新许可证等)来解决此问题,但这可能并不适合所有需要。