这可能吗? .NET框架是否依赖于字节码中的元数据?我希望有一个应用程序,我写的不适用于反射器或类似的.NET反编译器。
答案 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)等解决方案是否也可以帮助保护您的代码? 虽然它的价格非常高......