另一个问题,即Best .NET obfuscation tools/strategy,询问混淆是否易于使用工具实现。
我的问题是,混淆有效吗?在回复这个答案的评论中,有人说“如果你担心源代码被盗......对于真正的破解者来说,混淆几乎是微不足道的”。
我查看了 Dotfuscator 社区版的输出:它看起来让我感到困惑!我不想保持这种状态!
我知道简单地“破解”混淆软件可能相对容易:因为您只需要找到软件中的任何位置实现您想要破解的任何内容(通常是许可证保护),然后添加一个跳转来跳过它。
如果担心不仅仅是最终用户或“盗版”破解:如果担心是“资源盗窃”,即如果您是软件供应商,而您担心的是另一个供应商(潜在的竞争对手)反向 -设计您的源代码,然后他们可以将其用于或添加到他们自己的产品中……在何种程度上简单的混淆是对这种风险的充分或不充分的保护?
第一次编辑:
有问题的代码大约是 20 KLOC,它在最终用户机器上运行(用户控件,而不是远程服务)。
如果混淆真的“对真正的破解者来说几乎是微不足道的”,我想了解它为什么无效(而不仅仅是“多少”它无效)。
第二次编辑:
我不担心有人反转算法:更担心他们将算法的实际实现(即源代码)重新用于他们自己的产品。
考虑到 20 KLOC 需要几个月的时间来开发,是否需要更多或更少的时间(几个月)才能对所有内容进行去混淆处理?
是否有必要对某些东西进行去混淆以“窃取”它:或者一个理智的竞争对手可能只是将它批发到他们的产品中,同时仍然被混淆,接受它是维护的噩梦,并希望它几乎不需要维护?如果这种情况是可能的,那么混淆的 .Net 代码是否比编译的机器代码更容易受到这种攻击?
大多数混淆的“军备竞赛”是否主要旨在防止人们甚至“破解”某些东西(例如查找和删除实现许可保护/执行的代码片段),而不是防止“来源盗窃”?