这可能吗?.NET 框架是否依赖于字节码中的元数据?我想要一个我写的应用程序不能在反射器或类似的.NET 反编译器中工作。
6 回答
如果您删除元数据,框架将无法加载您的代码,或者找出它引用的其他程序集,或者类似的东西,所以不,这不是一个好主意。
混淆器将使“攻击者”更难反编译您的代码,但归根结底,如果有人有动力且聪明,那么您就无法阻止他们。
.NET 将始终编译为 MSIL,而 MSIL 本质上比原始 x86 更易于阅读。这只是您为使用 .NET 所做的权衡之一。
别担心。apache、linux 和其他所有东西的源代码都可以在网上免费获得,但它并没有为微软提供太多竞争优势,是不是 :-)
这看起来与以下问题相同:
在那里查看我的答案:
“我觉得你说的是‘混淆’。网上有很多关于它的文章:
http://en.wikipedia.org/wiki/Obfuscation
.NET 上用于混淆的“标准”工具由 Preemptive Solutions 提供:
http://www.preemptive.com/obfuscator.html
他们有一个随 Visual Studio 一起提供的社区版,您可以使用它。
你提到了 ILDasm,你看过 .NET Reflector 吗?
http://aisto.com/roeder/dotnet/
它让您更好地了解如果您发布清单,人们可以看到什么!”
我认为您指的是大会清单:
每个程序集,无论是静态的还是动态的,都包含一组数据,这些数据描述了程序集中的元素如何相互关联。程序集清单包含此程序集元数据。程序集清单包含指定程序集的版本要求和安全标识所需的所有元数据,以及定义程序集范围和解析对资源和类的引用所需的所有元数据。
.Net 程序集最重要的特性之一是它们是自描述组件,这是由清单提供的。因此,删除它们会以某种方式破坏其目的。
像 VMware 的 ThinApp(以前的 Thinstall)这样的解决方案是否也有助于保护您的代码?虽然它的价格非常高..
我不认为你可以删除元数据,但如果你想保护你的 IP,你可以混淆你的代码。
Dotfuscator 将阻止您的代码被反编译 http://www.preemptive.com/dotfuscator.html
编辑:我应该提到,这是专业版,免费社区版随 Visual Studio