一个不同的问题,即最佳.NET模糊处理工具/策略,询问模糊处理是否易于使用工具来实现。
我的问题是,混淆有效吗?在回复此答案的评论中,有人说:“ 如果您担心源代码盗窃……混淆对于真正的饼干来说微不足道 ”。
我已经看过Dotfuscator社区版的输出:对我来说,它看起来很模糊!我不想维持这一点!
我知道,简单地“破解”受混淆的软件可能相对容易:因为您只需要找到实现要破解的软件中的任意位置即可(通常是许可证保护),然后添加跳转即可跳过。
但是,如果担心的不只是最终用户或“海盗”所为:如果担心是“源盗窃”,即您是软件供应商,而您的担心是另一个供应商(潜在竞争对手),那么-对您的源进行工程设计,然后他们可以将其用于自己的产品中或添加到自己的产品中…在简单的混淆中,针对这种风险的适当或不充分的保护在多大程度上?
第一次编辑:
有问题的代码是大约20 KLOC,它在最终用户计算机(用户控件,而不是远程服务)上运行。
如果混淆确实“ 对于一个真正的饼干来说几乎是微不足道的 ”,我想对它无效的原因有一些见解(不仅仅是“多少”它无效)。
第二次编辑:
我并不担心有人会逆转算法:更担心他们会将算法的实际实现(即源代码)用于自己的产品中。
弄清楚20 KLOC是几个月的开发工作,对这一切进行模糊处理是否需要花费比这更多(或更少)的时间(几个月)?
甚至有必要对某事物进行模糊处理以“窃取”它吗?或者一个理智的竞争对手可能会在仍然被混淆的情况下简单地将其批发到他们的产品中,接受它是维护噩梦,并希望它几乎不需要维护?如果这种情况是一种可能性则混淆的.Net代码的比编译机器代码更容易受到这是什么?
大多数混淆性的“军备竞赛”是否主要是为了防止人们什至“破解”某些东西(例如查找和删除实现许可保护/执行的代码片段),而不是防止“源代码盗窃”?