0

我有我的应用程序的许可文件。现在可以破解它并且用户可以无限制访问的唯一方法是每 30 天删除一次许可文件并重新安装程序。

如何最好地保护此文件?(或信息)

我的第一个想法是将文件隐藏在 Windows %AllUsersProfile% 下的某个文件夹深处。并为文件夹使用晦涩的名称,以免宣传该位置。

另一个想法是写入注册表,但我们不能总是像我想要的那样写入 HKEY_Local_Machine,因为它需要管理员权限。

4

4 回答 4

2

在设置过程中创建许可证文件。并将缺少许可证文件视为无效的许可证文件。卸载、删除文件然后重新安装比仅仅删除文件更烦人。

如果我的系统某处出现带有模糊随机名称的文件,我会讨厌它,因为我想知道我是否感染了病毒,或者它是否只是一些行为不良的软件

并且不要太努力。让它比从下一个warez站点下载破解或许可证重置工具更难是没有用的。破解者会使用 FileMon 等工具快速找到您的许可证文件。

一个可能实际可行的想法(除了针对修补二进制文件的破解):
修复下载的到期日期并将许可证文件嵌入设置中。这样,他们实际上需要在许可证到期时下载新版本。但当然,您的用户可能会觉得这不可接受或可能不适合您的分发模型......

于 2010-12-02T15:21:55.207 回答
1

几乎任何隐藏或隐藏许可证文件的方法都是可以破解的。你真的需要在一些场景中做出决定:

  1. 我信任我的客户,但他们可能会无意中违反我的许可条款
  2. 我的产品非常受欢迎,因此将成为饼干的目标
  3. 我的产品对饼干不感兴趣,但我的客户是粘液袋,会从中复制鼻涕。

在案例 1 中,一个简单的许可证文件可以帮助您的客户合规。可能没有必要隐藏它或掩盖它。我认为这不是你的情况,因为你发布了这个问题。

在第 2 和第 3 种情况下,您可以做的事情很少会被轻易击败。破解者可用的工具非常强大且广泛可用,以及使用它们的技术。我们公司 ( www.wibu.us ) 有一名全职密码学家,他只关注人们如何破解软件,以便我们可以建立更强大的保护来抵御它。

对于 DIY 解决方案来说,最“正常”的方法可能是使用一些“标准”算法加密许可证文件,例如 AES 128 位或三重 DES。然后从几个因素的哈希中生成密钥,例如 MAC 地址、MB 序列号、安装日期,也许还有一些用户输入数据(“名称”“电话”等)。但是,加密可能会变得复杂,因此您要确保您知道使用这种方法在做什么。

于 2010-12-03T00:06:52.460 回答
1

强制应用程序通过端口 80 转到远程服务器,以检查在第一次安装时设置的哈希值,可能是针对 MAC 地址(不是绝对保证,但足够好)。如果他们再次尝试安装,它至少与 MAC 地址相关联,您可以停止安装。

编辑:

如果您的客户群很小并且您有资源支持他们,您可以在没有互联网访问的情况下执行相同的行为,除非客户需要来找您获取许可证文件。他们通过他们的系统生成一个密钥,再次绑定到 MAC 地址,然后将生成许可证文件的密钥发送给您。这当然取决于每天的传出下载次数。

于 2010-12-02T15:01:44.893 回答
0

一种解决方案是在许可证文件中嵌入到期日期。如果您的受保护程序没有找到许可证文件,则它是无效的。

所以即使用户删除它也无济于事,它仍然过期了。

在这种情况下,唯一的问题是:您需要在分发许可证文件时修复到期日期。您可以使用其他技巧(定期重新分发新许可证等)来解决此问题,但这可能并不适合所有需要。

于 2010-12-02T16:25:04.797 回答