微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在C#和Windows中限制评估软件的启动或运行时间

有没有什么好的方法来限制应用程序可以启动的次数或限制在Windows 7下使用C#的时间?

据我可以看到,registry可以很容易地编辑,有程序报告任何types的文件访问,虚拟机可以用来改变系统时间回到安装应用程序时,等等。对于每个想法,我可以想到有(通常)微不足道的工作。

我想避免需要互联网连接。 也就是说,我不希望软件要求每次使用哈希等来启动权限。

我看到有这种function的第三方许可证系统。 如果实施这些方法总是蹩脚的,那么他们怎么做,所以这不是跛脚?

System.Net.WebClient请求获取403 Forbidden,但浏览器不与Apache服务器

在Windows 8中,屏幕保护程序如何继续绘制桌面?

c#winforms:确定程序的第一次运行

Windows如何区分常规EXE和.NET EXE?

系统在哪里存储图标的位置?

注意:我不想“破解”第三方系统。 我已经有自己的许可证制度,我想改进。 通用的,似是而非的想法就是我所需要的。

谢谢安迪

如何枚举运行.Net Mono的networking共享?

是否有可能在.NET中检索Windows监视器布局信息?

一个迷你转储有用的.NETdebugging

.NET IOredirect – 通过char读取输出字符

挂第三个X鼠标button?

这不是你的问题的答案,只是想一想。 不管你的保护系统有多复杂,都会很容易被破解。 即使在线检查,如果有人想要它真的很糟糕,它可以,并将被破解。

也就是说,那些想要破解你的程序的人不是你的客户,他们从来不是,他们永远也不会。 如果你的保护系统是不可破解的(而且没有不可破解的保护系统),那么这些人就不会使用你的程序,并会发现一些他们可以破解的东西。

另一方面,作为你的客户的人不会试图破解它,并会购买原件。 问问自己 – 你是否真的想浪费你的时间,精力和金钱给那些不是你的客户的人,而且可能会让系统对于一个真实的人来说太慢了?

也就是说,我相信你应该制定某种保护制度,但是要用那种既快又容易实施,干扰最小的方法

构建一个相对安全但简单的软件许可系统并不容易。 不言而喻,只要给予足够的资源和时间,任何系统(除了在安全服务器上托管代码之外)都可以被破坏。 你所能做的最好的就是做出必要的努力,这样做比平均收益更大。

如果您对保护您自己的软件资产非常认真,那么您应该考虑使用经过商业验证的许可技术,而不是自行开发。 这就是说,让我们看看你如何考虑以你描述的方式来保护你。

首先,您应该认识到,在虚拟机时代,您创建的任何文件注册表项都可以轻松回滚。 如果没有在线组件进行验证过程,则无法防止此情况发生。

你可以做的是这样的事情:

存储系统使用天数的加密值 – 一个永远不能倒退的值。

存储加密的计数器,每次使用系统时,计数器都会减少到零。

存储软件启动的最后日期/时间的加密值。

存储其他三个值的加密哈希。

现在你有办法检查这些值是否一致,并限制某人篡改它们的能力。 你也应该将这些值予以抑制,以便它们不能被轻易的重播。

使用注册表,但加密到期日期的条目。 这不是万无一失的,但它会保持75%的休闲骗子。

其他一些技巧:

存储使用天数(可能在另一个注册表项或完全不同的地方),所以如果他们回滚时钟,用完的天数保持不变。

在你的加密中使用某种形式的盐,所以具有相同的exp日期的两个程序将具有不同的值。

远离真正讨厌的东西,比如写入HD的引导扇区(看着你的Adobe ),你将失去更多的用户做这种做法,而不是从DRM中获得。

任何安全系统的关键是你不能相信任何他们控制的东西。 任何没有互联网检查的系统都无法阻止他们重新加载虚拟机。

我注意到一些程序的安装人员正在为程序的其余部分独立下载客户端的趋势。 你可以使用元编程来发送可执行文件检查某些模糊的可执行文件(插入不明确的东西在这里)吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐