代码之家  ›  专栏  ›  技术社区  ›  Danail

对于有许多项目的解决方案,在Visual Studio中更好地模糊化?

  •  1
  • Danail  · 技术社区  · 15 年前

    我有一个包含许多项目的解决方案,这会导致许多DLL文件。

    我的问题是,这是混淆时的一个障碍吗?我应该以某种方式优化它吗?

    或者只是公共/私有字段/方法的问题?

    2 回复  |  直到 15 年前
        1
  •  2
  •   Ruben Bartelink    15 年前

    不,您绝对不应该为了一个模糊器而牺牲您的项目布局结构。

    一般来说,模糊器有一个模式,你可以说“这里是我的整个系统,假设没有其他人在做任何事情”,这有效地说,把它当作一个代码块对待。

    使用的技巧 internal 一起 InternalsVisibleToAttribute 可以使用(默认情况下,许多模糊器将更具吸引力 内部的 东西比 public 东西。

    任何需要保持原样的东西,例如: System.Reflection dynamic -基于访问可以标记为 ObfuscationAttribute 告诉模糊者“不要碰那个”。

    在是否将立面层作为组件之间的桥梁,然后在此基础上创建内部类时,还需要考虑其他权衡因素,这取决于上下文,上下文可能使逆向工程更容易(您正在给OTU一个快速摘要)或更难(您有一个核心类,并通过在上面有一些关键的方法,例如重命名)。

        2
  •  3
  •   rIPPER    15 年前

    使用Dotfuscator完成此操作的方法是将所有程序集作为输入添加到Dotfuscator项目中。完成此操作后,您需要为整个项目(从“输入文件”选项卡,看起来像一组书籍的图标)或在每个部件上分别关闭库模式。库模式是dll文件的默认模式,不会重命名任何公共可见元素。

    关闭库模式后,所有方法都将被重命名,调用程序集中的方法也将被更新。如果通过反射或延迟绑定执行任何动态调用,则需要手动从重命名中排除这些目标方法。

    编辑:您可以看到的另一个可能使您的分发更容易的事情是Dotfuscator的链接功能。这允许您将程序集链接在一起(类似于ilmerge所做的),这样您就可以在所有dll链接到一个exe或任何其他组合的情况下发送一个exe,这样您就可以向最终用户提供更少的物理文件。