【发布时间】:2008-08-28 03:46:30
【问题描述】:
这可能吗? .NET 框架是否依赖于字节码中的元数据?我想要一个我写的应用程序不能在反射器或类似的 .NET 反编译器中工作。
【问题讨论】:
标签: .net metadata decompiling
这可能吗? .NET 框架是否依赖于字节码中的元数据?我想要一个我写的应用程序不能在反射器或类似的 .NET 反编译器中工作。
【问题讨论】:
标签: .net metadata decompiling
如果您删除元数据,框架将无法加载您的代码,或找出它引用的其他程序集,或类似的东西,所以不,这不是一个好主意。
混淆器会使“攻击者”更难反编译您的代码,但归根结底,如果某人有动力且聪明,那么您将无法阻止他们。
.NET 将始终编译为 MSIL,而 MSIL 本质上比原始 x86 更易于阅读。这只是您为使用 .NET 所做的权衡之一。
别担心。 apache、linux 和其他所有东西的源代码都可以在网上免费获得,但它并没有为微软提供太多竞争优势,是吗:-)
【讨论】:
我想你指的是Assembly Manifest:
每个程序集,无论是静态的还是 动态的,包含数据的集合 描述了 装配相互关联。这 程序集清单包含这个 程序集元数据。大会 清单包含所有元数据 需要指定程序集的 版本要求和安全性 身份,以及所需的所有元数据 定义组件的范围和 解决对资源的引用和 类。
.Net 程序集最重要的特性之一是它们是自描述组件,这是由清单提供的。所以删除它们会以某种方式破坏它的目的。
【讨论】:
这看起来与以下问题相同:
How do I make the manifest of a .net assembly private?
在那里查看我的答案:
How do I make the manifest of a .net assembly private?
“我觉得你说的是“混淆”,网上有很多关于它的文章:
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/
它让您更好地了解如果您发布清单,人们可以看到什么!"
【讨论】:
我认为您不能删除元数据,但如果您希望保护您的 IP,您可以混淆您的代码。
【讨论】:
Dotfuscator 将阻止您的代码被反编译 http://www.preemptive.com/dotfuscator.html
编辑:我应该提一下,这是专业版,Visual Studio 附带的免费社区版
【讨论】:
像 VMware 的 ThinApp(以前的 Thinstall)这样的解决方案是否也有助于保护您的代码? 不过它的价格非常高..
【讨论】: