引用混淆的DLL

时间:2017-02-13 13:21:58

标签: c# dll dotfuscator

我使用DotfuscatorCLI和Visual Studio 2015 Update 3 Post Build事件命令对.Net DLL进行了模糊处理。它似乎成功地被混淆了,因为在该命令之后没有出现错误。

这是命令:

  

dotfuscatorcli.exe / q   / P = SourceDirectory =" $(TARGETDIR)\",的SourceFile = $(TargetFileNa我)   " $(PROJECTDIR)Dotfuscator.xml"

这是Obfuscator.xml

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE dotfuscator SYSTEM "http://www.preemptive.com/dotfuscator/dtd/dotfuscator_v1.1.dtd">
<dotfuscator version="1.1">
   <propertylist>
      <property name="SourceDirectory" value="This Path Will Be Replaced By Visual Studio" />
      <property name="SourceFile" value="This Filename Will Be Replaced By Visual Studio" />
   </propertylist>
   <trigger>
      <filelist>
         <file dir="${SourceDirectory}\" name="${SourceFile}" />
      </filelist>
   </trigger>
   <output>
      <file dir="${SourceDirectory}\Dotfuscator\" />
   </output>
</dotfuscator>

现在,当我在另一个项目中引用该DLL并尝试访问其公共成员时;我再也无法访问它们了。就好像它们没有在该DLL中定义/公开,并且它们在intellisense中也不可用。

如果我在对象浏览器中查看该DLL,它会显示带有一些奇怪名称的类,例如h,我,m,n等。

我是否在这里遗漏了一些内容,以便使用该DLL?

任何回应,提示或解决方案都将受到赞赏。

2 个答案:

答案 0 :(得分:0)

听起来你可能已禁用 Library Mode。尝试重新启用它,这将告诉Dotfuscator自动排除公共类型和成员重命名。

答案 1 :(得分:0)

在@Nathan的帮助下,我能够解决我遇到的问题。以下是更新的Obfuscator.xml文件中的内容。

<?xml version="1.0" encoding="utf-8" standalone="no"?>
    <!DOCTYPE dotfuscator SYSTEM "http://www.preemptive.com/dotfuscator/dtd/dotfuscator_v2.3.dtd">
    <dotfuscator version="2.3">
       <propertylist>
          <property name="SourceDirectory" value="This Path Will Be Replaced By Visual Studio" />
          <property name="SourceFile" value="This Filename Will Be Replaced By Visual Studio" />
       </propertylist>
        <input>
        <asmlist>
          <inputassembly>
           <option>library</option>
             <file dir="${SourceDirectory}\" name="${SourceFile}" />
          </inputassembly>
       </asmlist>
      </input>
       <output>
          <file dir="${SourceDirectory}\Dotfuscator\" />
       </output>
    </dotfuscator>

我知道如果我使用dotfuscator UI,它会自动启用库模式,但我会故意选择CLI方法。我想自动化并为我的35+ DLL提供通用解决方案,这些DLL在一个项目中被引用。 所以现在使用这种方法,我希望这不仅可以自动化我的混淆过程,而且还可以加快速度,因为它是一种构建后事件命令方法。简而言之,我需要做的就是按Build Build解决方案按钮,完成它。

希望这会对其他人有所帮助。如果有任何歧义或疑虑,或者您有任何其他建议,请告诉我。