首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为软件保护目的将保护试用信息存储在何处

为软件保护目的将保护试用信息存储在何处
EN

Stack Overflow用户
提问于 2010-12-23 18:36:56
回答 5查看 5.4K关注 0票数 16

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

在C#.Net应用程序中,在哪里存储保护试用信息,如过期日期、使用时间的数量?

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

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

1.登记册条目

首先,有些用户甚至无法读取Registry。

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

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

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

我不知道怎么处理这件事。请帮帮忙。

普通档案

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

(

  • 2.a)软件安装路径下的简单XML文件
  • 2.b)配置文件

同样,用户可以卸载该软件并删除这些普通文件,然后重新安装该软件。

-软件本身

如果我们把保护试用信息(过期日期,我们不能把使用的时间)在软件本身,它仍然容易受到我前面提到的情况。而且,这样做一点也不酷。

-试用产品-钥匙

它的工作方式类似于授权过程,也就是说,我们将试用信息放入RSA签名的字符串中。然而,用户尝试使用该软件需要太多的步骤(他们可能会失去耐心):

  • 4.a)用户下载软件;
  • 4.B)用户通过提供用户名(或电子邮件)或硬件信息发送电子邮件请求试用产品-密钥;
  • 4.c)服务器接收请求,RSA-签名并发送给用户;
  • 4.d)用户现在可以在(过期日期和使用时间编号)的条件下使用它。

F 215

现在,服务器拥有用户用户名或硬件信息的记录,因此用户将被拒绝请求第二次试用。收集硬件信息合法吗?

总之,用户必须多做一个额外的步骤(请求试用产品密钥),只是为了尝试使用该软件,这并不是很酷(把我自己当成一个用户)。

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

记者:我的软件将进入中国市场,后者的软件市场不同于美国。中国的大多数人,他们只购买硬件,他们通常不购买像Micosoft /Office这样的软件(他们只使用盗版软件)。然而,一些专业软件针对某一特定领域,如果没有破解版本或破解版本很难安装,研究人员仍然愿意购买。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-12-23 19:43:03

选项1(普通注册表项)或2(普通文件)都可以。这是我的推理:

  • Standard-privileged用户确实拥有注册表的读取权限。如果他们看不懂你的钥匙,还有别的地方不对劲。标准特权用户对注册表没有写权限,但这并不重要,因为他们一开始也没有安装软件的权限。换句话说,要么用户将拥有在安装时创建注册表项的权限,要么他们需要安装帮助。因此,您为注册表项提出的基本技术问题并不是一个真正的因素,
  • 只是不担心那些做一些事情的用户,比如设置他们的系统时钟或手动侵入注册表来破坏您的键。让我再说一遍:只是不担心用户会有意识地改变他们的系统,从而超越您的试用限制,--而且毫无疑问,调整系统时钟或编辑注册表都是重要的修改。你不应该担心这些用户的原因是,他们的潜在收入正好是0美元。一个愿意为盗版你的软件做出这种有意识的选择的用户不会放弃,如果你的产品不起作用,就决定付钱给你。如果他们不能免费获得你的软件,他们要么和竞争对手一起去,要么不去。你这样做是为了赚钱--你不想花时间和资源去抢占你赢不到的销售额,也不想把用户派给竞争对手。因此,您为这两个选项提出的基本安全问题都不是一个因素。
票数 13
EN

Stack Overflow用户

发布于 2010-12-23 18:46:03

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

票数 1
EN

Stack Overflow用户

发布于 2010-12-23 19:56:14

我建议采取稍微不同的策略。

给你的软件一个“低”版本。没有尝试,只是功能非常有限。

如果他们想尝试一个“专业”版本,然后要求他们获得一个试用钥匙。这应该是加密的某种格式,存储它的任何时候,你想。当应用程序启动时,测试是否存在这个试用密钥。如果它在那里那就解密它。密钥内部应该是软件的过期日期。

测试日期并采取相应的行动。如果它不存在,那么就以lite版本的形式运行。

为了获得试用密钥,你可以让他们在你的应用程序中输入一个电子邮件地址和一些你想要的其他信息。要求这台机器为这个有限的部分连接到互联网并不是不合理的。甚至MS Office也要求您简短地连接到internet以验证密钥。让应用程序与您的服务器与密钥请求联系。把钥匙发给他们。

为了获得额外的分数,将试用钥匙与机器本身的某一公制相联系。即使只是盒子的名字。这些变化很少,无论如何,这是一次审判。

如果你真的不能强迫他们连接到互联网上去获取一个密钥,那么你可以走一条稍微不同的路线。让应用程序生成一个请求(其中包括机器名称或类似的内容)。让用户用生成的请求id打电话给您,或者让他们将其插入网站。然后把那台机器的钥匙发电子邮件给他们。

所有这些都阻止共享密钥。有一个后退,以防钥匙位置被劫持,并防止钥匙被移动到其他机器。它也给了你一种完全不相连的方式来做这件事。即使他们从你的应用程序中取出公开加密密钥来解密软件许可密钥,他们也不会为了构建一个新的许可证密钥文件而拥有您的私密密钥。

现在,关键管理只是你所打击的邪恶的一个方面。

下一步是,你需要混淆你的应用程序的方式,他们不能简单地解压缩和绕过你的钥匙检查。这比传递密钥文件更常见。

您甚至可能在应用程序中有多个方法,以不同的方式测试密钥。但这是一个不同的问题。

对于那些有报复能力的人来说,这是最后的奖励:用关键的gen软件为各种盗版板播种种子,这些软件对那些试图把你挖走的人的机器做些有趣的事情。你在这里可以很有创意。

或者,就像Joel说的,你根本不用担心他们。毕竟,如果他们想要找到你软件的破解版本,他们无论如何也不会为它付费,而且你真的没有损失任何东西。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4521468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档