Dotfuscator 5 CE-通过签名重命名排除



我正在使用配置文件从命令行运行dotfuscator 5。除了刚刚出现的一个新需求外,这或多或少都可以。

我有一个类,它有一小部分(不到六个)void方法,需要从重命名中排除(对于按名称调用反射方法的迂回系统;不要问…)

他们的签名是(为了保护无辜而更改姓名)void Method(System.Xml.XmlNode xnode, ref System.String str)

我的问题有两个:

  • 如何在dotfuscator配置语法中表达ref参数
  • 为什么使用Map文件中引用的方法的签名不起作用

重命名这些方法时,映射文件包含元素<signature>void(System.Xml.XmlNode, string&amp;)</signature>。因此,我希望能够在配置文件中指定:

<type name="ParentClass" excludetype="false">
<method signature="void(System.Xml.XmlNode, string&amp;)"/>
</type>

这行不通。命令行实用程序的输出声明配置文件无效。

如果我包含语法name=".*" regex="true"则该类型中的所有方法都将被排除。我不想那样。我理解为什么会这样——规则是ORed在一起的——但该实用程序通过拒绝指定我实际需求的配置文件,迫使我使用我不想要的选项。

什么东西?

我觉得——因为我开始对此感到恼火——我应该指出,我发现Dotfuscator文档……不太好。

配置文件无效,因为方法节点没有"名称"。

如果只是试图排除一个特定的方法,您可以使用UI在左侧的Renaming->Excludes树视图中实际单击该方法旁边的复选框,这将为您生成正确的XML。如果您决定走此路线,请先删除现有的<type>节点。

如果您希望它将ParentClass中的任何方法与该签名匹配(即使只有一个),xml应该是(用<Namespace>的正确值替换):

 <type name="<Namespace>.ParentClass" excludetype="false">
    <method name=".*" regex="true" signature="void(System.Xml.XmlNode, string&amp;)"/>
 </type>

创建规则后,您可以使用UI导航到"重命名"->"排除"选项卡,右键单击右侧"自定义规则"树视图中的方法节点,然后单击"预览"。它应该突出显示您正在寻找的方法。以下是单击预览时UI中的屏幕截图:http://files.preemptive.com/Support/CustomRuleRefParam.png

相关内容

  • 没有找到相关文章

最新更新