从.NET应用程序中删除元数据?

时间:2008-08-28 03:46:31

标签: .net metadata decompiling

这可能吗? .NET框架是否依赖于字节码中的元数据?我希望有一个应用程序,我写的不适用于反射器或类似的.NET反编译器。

6 个答案:

答案 0 :(得分:2)

如果你删除元数据,框架将无法加载你的代码,或者弄清楚它引用了哪些其他程序集,或类似的东西,所以不,这不是一个好主意。

混淆器会让“攻击者”对代码进行反编译变得更加困难,但在一天结束时,如果某人有动力和聪明,那么你可以做很多事情来阻止它们。 .NET将始终编译为MSIL,并且MSIL本质上比原始x86更容易阅读。这只是您使用.NET所做的权衡之一。

不要担心。 apache,linux和其他所有的源代码都可以在网上免费获得,但它并没有为微软提供太多的竞争优势: - )

答案 1 :(得分:1)

我认为你指的是Assembly Manifest

  

每个组装,无论是静态的还是静态的   动态,包含数据集合   那个描述了元素中的元素   装配相互关联。该   程序集清单包含这个   装配元数据。一个集会   manifest包含所有元数据   需要指定程序集   版本要求和安全性   身份和所需的所有元数据   定义程序集的范围和   解析对资源的引用   类。

.Net程序集最重要的特性之一是它们是自描述组件,这是由清单提供的。所以删除它们会以某种方式破坏它的目的。

答案 2 :(得分:1)

这看起来与以下问题相同:

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/

如果您发布清单,它可以让您更好地了解人们可以看到什么!“

答案 3 :(得分:0)

我认为您不能删除元数据,但如果您希望保护自己的IP,则可以对代码进行模糊处理。

答案 4 :(得分:0)

Dotfuscator将阻止您的代码被反编译 http://www.preemptive.com/dotfuscator.html

编辑:我应该提到,这是专业版,免费社区版随视觉工作室一起提供

答案 5 :(得分:0)

VMware的ThinApp(以前的Thinstall)等解决方案是否也可以帮助保护您的代码? 虽然它的价格非常高......