它可能与其他问题重复,但我发誓我在 Google 上搜索了很多并在 StackOverflow.com 上搜索了很多,但我找不到我的问题的答案:
在 C#.Net 应用程序中,在哪里存储保护试用信息,例如到期日期、使用次数?
我知道,各种软件保护策略都可以被老练的黑客破解(因为他们几乎总能绕过过期检查步骤)。但是我现在要做的只是以合理的方式保护它,使“普通”/“高级”用户无法搞砸它。
好的,为了证明我在 StackOverflow.com 上进行了很多搜索和搜索,我列出了我得到的所有可能的策略:
1.注册表项
首先,一些用户可能甚至无法读取注册表。
其次,如果我们将Protection Trial Info放在一个注册表项中,用户可以通过比较软件安装前后的差异,随时找到它在哪里。他们可以简单地改变它。
好的,您可能会说我们应该加密保护试用信息,是的,我们可以这样做。但是如果用户只是在安装之前更改了他们的系统日期呢?
好吧,你可能会说我们也应该放一个最后使用的日期,如果有问题,最后使用的日期可以作为保护指南。但是如果用户只是卸载软件并删除所有与该软件相关的注册表项,然后重新安装软件怎么办?
我不知道如何处理这个问题。请帮忙。
一个普通文件
首先,有一些地方可以放置纯文件:
- 2.a) 软件安装路径下的简单XML文件
- 2.b) 配置文件
同样,用户可以卸载软件并删除这些普通文件,然后重新安装软件。
- 软件本身
如果我们将保护试用信息(到期日期,我们不能输入使用次数)放在软件本身中,它仍然容易受到我上面提到的情况的影响。此外,这样做甚至都不酷。
- 试用产品密钥
它的工作方式类似于许可过程,也就是说,我们将试用信息放入 RSA 签名的字符串中。但是,用户尝试使用该软件需要执行太多步骤(他们可能会失去耐心):
- 4.a) 用户下载软件;
- 4.b) 用户通过提供用户名(或电子邮件)或硬件信息发送电子邮件请求试用产品密钥;
- 4.c) 服务器接收到请求,对其进行 RSA 签名并发送回用户;
- 4.d) 用户现在可以在(到期日期和使用次数)的条件下使用它。
现在,服务器已经记录了用户的用户名或硬件信息,因此用户将被拒绝请求第二次试用。收集硬件信息是否合法?
总之,用户必须多做一个步骤(请求试用产品密钥)才能尝试使用该软件,这并不酷(认为自己是用户)。
注意:这个问题不是关于许可,而是关于在哪里存储试用信息。试用期结束后,用户应申请许可证(CD-Key/Product-Key)。我将使用 RSA 签名(绑定到用户硬件)
PS:我的软件将针对中国市场,其软件市场与美国不同。大多数中国人只买硬件,一般不买微软Windows/Office之类的软件(他们只用盗版)。但是,一些针对特定领域的专业软件,如果没有破解版或者破解版很难安装,研究人员还是愿意购买的。