C# 用于软件保护目的的保护试用信息的存储位置

C# 用于软件保护目的的保护试用信息的存储位置,c#,store,protection,trial,C#,Store,Protection,Trial,这可能与其他问题重复,但我发誓我在谷歌上搜索了很多,在StackOverflow.com上搜索了很多,我找不到我问题的答案: 在C#.Net应用程序中,在何处存储保护试用信息,例如过期日期、使用次数 我知道,各种软件保护策略都可以被狡猾的黑客破解(因为他们几乎总能绕过过期检查步骤)。但我现在要做的只是以一种合理的方式保护它,“普通”/“高级”用户不能把它搞砸 好的,为了证明我在StackOverflow.com上搜索了很多,我列出了所有可能的策略: 1.注册表项 首先,有些用户甚至可能没有权限读

这可能与其他问题重复,但我发誓我在谷歌上搜索了很多,在StackOverflow.com上搜索了很多,我找不到我问题的答案:

在C#.Net应用程序中,在何处存储保护试用信息,例如过期日期、使用次数

我知道,各种软件保护策略都可以被狡猾的黑客破解(因为他们几乎总能绕过过期检查步骤)。但我现在要做的只是以一种合理的方式保护它,“普通”/“高级”用户不能把它搞砸

好的,为了证明我在StackOverflow.com上搜索了很多,我列出了所有可能的策略:

1.注册表项 首先,有些用户甚至可能没有权限读取注册表表

其次,如果我们将Protection试用版信息放入注册表项中,用户总是可以通过比较软件安装前后的差异来找到它所在的位置。他们可以简单地改变它

好的,你可能会说我们应该加密保护试用信息,是的,我们可以做到。但是,如果用户在安装之前更改了系统日期,该怎么办

好的,你可能会说,我们还应该输入最后使用的日期,如果出现问题,最后使用的日期可以作为保护指南。但是,如果用户只是卸载软件并删除与此软件相关的所有注册表项,然后重新安装软件,该怎么办

我不知道如何处理这件事。请帮忙

普通锉刀 首先,有一些地方可以放置普通文件:

  • 2.a)软件安装路径下的简单XML文件
  • 2.b)配置文件
同样,用户可以卸载软件并删除这些普通文件,然后重新安装软件

-软件本身 如果我们把保护试验信息(过期日期,我们不能把使用次数)放在软件本身,它仍然容易受到我上面提到的情况的影响。而且,这样做也不酷

-试用产品密钥 它的工作原理类似于许可过程,也就是说,我们将试用信息放入RSA签名字符串中。但是,用户尝试使用该软件需要太多步骤(他们可能会失去耐心):

  • 4.a)用户下载软件
  • 4.b)用户通过提供用户名(或电子邮件)或硬件信息发送电子邮件请求试用产品密钥
  • 4.c)服务器接收请求,RSA签名并发送回用户
  • 4.d)用户现在可以在(过期日期和使用次数)的条件下使用
现在,服务器有用户用户名或硬件信息的记录,因此用户请求第二次试用将被拒绝。收集硬件信息合法吗

一句话,用户必须多做一步(请求试用产品密钥)才能尝试使用该软件,这并不酷(认为自己是用户)

注意:这个问题不是关于许可,而是关于在哪里存储试用信息。试用期满后,用户应申请许可证(CD密钥/产品密钥)。我将使用RSA签名(绑定到用户硬件)


注:我的软件将面向中国市场,中国的软件市场与我们不同。在中国,大多数人只买硬件,他们通常不买像微软视窗/办公室这样的软件(他们只使用盗版)。但是,一些针对特定领域的专业软件,如果没有破解版本或者破解版本很难安装,研究人员仍然愿意购买。

你不会找到一个完美的解决方案。你在这方面的努力应该与你所做产品的价格成比例。如果它值很多钱,那么就买一个专业的解决方案。如果没有,则使用您找到的任何方法组合。使用注册表,请求联机试用密钥,检查用户是否操纵系统时间,等等。

您可以要求使用试用的用户连接到internet吗?如果是这样的话,只要让试用版在启动时联系服务器,您就可以检查各种情况。你不必担心在用户计算机上存储东西,或者他们篡改数据或系统时间

选项1(普通注册表项)或2(普通文件)都可以。我的理由如下:

  • 标准特权用户确实具有注册表的读取权限。如果他们看不懂你的钥匙,那就是出了问题。标准特权用户没有注册表的写入权限,但这并不重要,因为他们也没有安装软件的权限。换句话说,要么用户有权在安装时创建您的注册表项,要么他们仍需要安装帮助。因此,您为注册表项提出的基本技术问题并不是一个真正的因素
  • 只是不要担心那些用户会延迟他们的系统时钟或手动破解注册表来破坏你的密钥。让我再说一遍:只要不担心用户有意识地决定以一种重要的方式改变他们的系统,以克服您的试用限制——毫无疑问,延迟系统时钟或编辑注册表都是重大修改。你不必担心这些用户的原因是他们的潜在收入正好是0美元。如果一个用户愿意在盗版你的软件时做出这种有意识的选择,他不会放弃,如果你的产品不起作用,他会决定为你的产品付费。如果他们不能免费获得你的软件,他们要么选择竞争对手,要么不选择。你这样做是为了赚钱——你不想花时间和资源