可能重复:
.Net Obfuscation
Alternative for Obfuscation in the .NET world
就在几分钟前,我读到有许多免费工具可以让你将C#.exe转换回VB解决方案。这意味着我的专有代码可以被查看,编辑和重新编译/重新分发。有办法防止这种情况吗?
答案 0 :(得分:2)
简而言之,您需要使用Obfuscation。仅举几例。
您可以阅读此MSDN article,其中包含有关如何对代码进行模糊处理的建议。
答案 1 :(得分:1)
你可以使用混淆器。Salamander是.NET的一个这样的工具......
Confuser是.NET的另一个免费混淆器。它是用C#开发并使用Mono
答案 2 :(得分:0)
您可以使用mono将其编译为原生二进制文件,只需谷歌搜索。
答案 3 :(得分:0)
您还可以将敏感函数/组件编码为本机C ++,将其包装在C ++ / CLI中,除了模糊.NET程序集之外还使用.NET。
即使有混淆,JIT编译器最终也需要查看IL代码,你只是让反编译变得更加困难。
答案 4 :(得分:0)
混淆器是一个不错的选择,因为它增加了一个人查看,编辑,重新分发等代码的努力。
虽然这些代码不能在物理上保护您的代码,但它们可能会阻止反编译代码的行为:法律机制,如专利,版权和许可。
反编译或逆向工程是经济努力的一场战斗。您是否值得对您的代码进行模糊处理(可能与反射“陷阱”相冲突),是否值得对某人进行逆向工程(没有上下文)而不是模拟或重写?
对此答案的评论,https://stackoverflow.com/a/1988467/64348,其中有几个人同意,表明混淆不会阻止回到原始(或原始的某个足够接近的版本)代码。混淆只是对可逆翻译的一种替代,除了一些有用的背景之外,不需要真正的密钥。