【问题标题】:How to prevent renaming of all classes, interface in dotfuscator如何防止重命名dotfuscator中的所有类、接口
【发布时间】:2017-03-03 15:03:50
【问题描述】:

我正在关注一个 MSDN 站点 https://msdn.microsoft.com/en-us/library/hh977082(v=vs.107).aspx,使用 VS 免费提供的 dotfuscator 来混淆我的 c# 代码。

在我的 C# 项目中,我使用了依赖注入 (Castle.Windsor),因此我的应用程序在混淆后崩溃了。

我正在考虑不重命名我的任何类和接口名称,包括构造函数,而是让它们的方法、变量重命名可以解决问题。我正在尝试在 dotfuscator 中为此设置排除规则,但仍然无法这样做。

您能否告诉我们如何设置排除规则,以防止重命名类和接口名称及其构造函数,但让它们的方法和变量在 dotfuscator 中重命名?我用的是VS2015自带的dotfuscator。

【问题讨论】:

    标签: c# c#-4.0 obfuscation dotfuscator


    【解决方案1】:

    Renaming documentation for Dotfuscator Community Edition 提供了有关如何重命名排除项的一般说明。听起来,在这种情况下,您应该添加一个类型排除。这只会排除类型本身(及其构造函数),而不排除任何方法/字段/属性。类型排除也适用于接口。

    如果您尝试排除所有类型和接口,您可以将排除规则标记为正则表达式规则,然后使用.* 匹配所有名称。如果您尝试仅排除一部分类型,请注意指定完全限定名称。

    您可以使用“预览”按钮查看将被排除的内容。 (请注意,构造函数不会显示为被排除在外,但它们实际上会在您构建时被排除。)

    最后,Pro documentation for excluding by Type 提供了有关其中一些功能如何工作的更多详细信息,因此查看那里也可能会有所帮助。在大多数情况下,Pro 和 Community 的功能是相同的。

    完全披露:我为 PreEmptive Solutions 工作。

    【讨论】:

    • 谢谢内森。实际上,我的解决方案和许多类中有 5 个库和 2 个 exe 项目。似乎通过排除规则解决了一些问题,但出现了另一个问题,因为多个项目正在使用许多类。看来我需要找到我们所有需要排除的类 - 所以这种方法在我的情况下似乎有点麻烦。因此,我决定为每个库和 exe 使用“库模式”。现在,它似乎正在工作。 “图书馆模式”适合这种情况吗?
    • 库模式会自动排除程序集中的所有公共成员,因此它可能是您想要的库。它也适用于可执行文件,但您最终可能会重命名您喜欢的更少。如果是这样,您可以禁用库模式并为这些程序集使用手动排除项。
    猜你喜欢
    • 2010-12-04
    • 2020-02-13
    • 2013-08-29
    • 2016-02-22
    • 2018-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多