没有布尔检查验证许可证信息?

时间:2009-02-10 02:44:09

标签: c# asp.net-mvc licensing

我目前正在使用一个简单的XML文件,其中包含许可证信息以及数据的签名和公钥。到目前为止,这种方法运作良好。但是,我看到一个相当大的安全漏洞......

当我的ASP.NET MVC应用程序启动时,它会验证许可证并相应地设置“ValidLicense”bool属性。在每个请求期间,将检查此属性,如果许可证无效,则会显示错误消息。

正如您所猜测的那样,无论许可证的有效性如何,都无法阻止有能力的用户简单地修改我的程序集以将“ValidLicense”设置为true。我知道这可以在任何应用程序中完成,但使用.NET程序集似乎非常容易。

有什么方法可以阻止这种情况发生,或者至少使破解许可证验证程序变得困难一些?

如果可能的话,我宁愿远离汇编加密和混淆系统。如果您觉得它们足够好以保证成本和额外的头痛,请继续建议它们。

4 个答案:

答案 0 :(得分:8)

获胜的唯一方法就是不玩。

那些想要窃取你的东西的人(无论你采取什么样的保护措施),那些要付钱的人,如果他们太难打破他们的话。

答案 1 :(得分:3)

每次需要验证许可证时,您可以执行复杂的计算,而不是简单的布尔变量,并根据计算结果建立逻辑。但是你确实得到了一个性能。无论如何,破解你的装配也不会那么难。

您还可以使用一些更高级的技术,例如代码的动态变异,并使用相应的可变函数来控制逻辑流。

但是,您应该问自己,您的集会是否真的包含了如此宝贵的知识产权,以保证实施此类任何事情的时间和精力?如果发生这种情况,那么走法律路线并与潜在的盗版作斗争可能会更加可行和便宜。

答案 2 :(得分:1)

答案 3 :(得分:0)

我在尝试破解.NET产品时遇到的一种方法是使用非托管的.DLL进行许可检查。不仅如此,.DLL还包含了许多实际在软件中使用的代码。因此,为了破解产品,我实际上必须破解非托管的.DLL(或制作一个完美的包装器)。毋庸置疑,这阻止了像我一样的崇拜者。 :)