我目前正在使用一个简单的XML文件,其中包含许可证信息以及数据的签名和公钥。到目前为止,这种方法运作良好。但是,我看到一个相当大的安全漏洞......
当我的ASP.NET MVC应用程序启动时,它会验证许可证并相应地设置“ValidLicense”bool属性。在每个请求期间,将检查此属性,如果许可证无效,则会显示错误消息。
正如您所猜测的那样,无论许可证的有效性如何,都无法阻止有能力的用户简单地修改我的程序集以将“ValidLicense”设置为true。我知道这可以在任何应用程序中完成,但使用.NET程序集似乎非常容易。
有什么方法可以阻止这种情况发生,或者至少使破解许可证验证程序变得困难一些?
如果可能的话,我宁愿远离汇编加密和混淆系统。如果您觉得它们足够好以保证成本和额外的头痛,请继续建议它们。
答案 0 :(得分:8)
获胜的唯一方法就是不玩。
那些想要窃取你的东西的人(无论你采取什么样的保护措施),不那些要付钱的人,如果他们太难打破他们的话。
答案 1 :(得分:3)
每次需要验证许可证时,您可以执行复杂的计算,而不是简单的布尔变量,并根据计算结果建立逻辑。但是你确实得到了一个性能。无论如何,破解你的装配也不会那么难。
您还可以使用一些更高级的技术,例如代码的动态变异,并使用相应的可变函数来控制逻辑流。
但是,您应该问自己,您的集会是否真的包含了如此宝贵的知识产权,以保证实施此类任何事情的时间和精力?如果发生这种情况,那么走法律路线并与潜在的盗版作斗争可能会更加可行和便宜。
答案 2 :(得分:1)
答案 3 :(得分:0)
我在尝试破解.NET产品时遇到的一种方法是使用非托管的.DLL进行许可检查。不仅如此,.DLL还包含了许多实际在软件中使用的代码。因此,为了破解产品,我实际上必须破解非托管的.DLL(或制作一个完美的包装器)。毋庸置疑,这阻止了像我一样的崇拜者。 :)