【问题标题】:Remove Meta Data from .NET applications?从 .NET 应用程序中删除元数据?
【发布时间】:2008-08-28 03:46:30
【问题描述】:

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

【问题讨论】:

    标签: .net metadata decompiling


    【解决方案1】:

    如果您删除元数据,框架将无法加载您的代码,或找出它引用的其他程序集,或类似的东西,所以不,这不是一个好主意。

    混淆器会使“攻击者”更难反编译您的代码,但归根结底,如果某人有动力且聪明,那么您将无法阻止他们。
    .NET 将始终编译为 MSIL,而 MSIL 本质上比原始 x86 更易于阅读。这只是您为使用 .NET 所做的权衡之一。

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

    【讨论】:

      【解决方案2】:

      我想你指的是Assembly Manifest

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

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

      【讨论】:

        【解决方案3】:

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

        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/

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

        【讨论】:

          【解决方案4】:

          我认为您不能删除元数据,但如果您希望保护您的 IP,您可以混淆您的代码。

          【讨论】:

            【解决方案5】:

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

            编辑:我应该提一下,这是专业版,Visual Studio 附带的免费社区版

            【讨论】:

              【解决方案6】:

              像 VMware 的 ThinApp(以前的 Thinstall)这样的解决方案是否也有助于保护您的代码? 不过它的价格非常高..

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2019-05-23
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多