引用经过模糊处理的 DLL



我已经使用DotfuscatorCLI和Visual Studio 2015 Update 3 Post Build事件命令混淆了.Net DLL。它似乎已成功混淆,因为该命令之后没有出现错误。

这是命令:

dotfuscatorcli.exe/q /p=SourceDirectory="$(TargetDir(\",SourceFile=$(TargetFileNa me( "$(ProjectDir(Dotfuscator.xml">

这是混淆器.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 中没有定义/公共,并且在智能感知中也不可用。

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

为了使用该 DLL,我在这里错过了什么吗?

任何回应,提示或解决方案将不胜感激。

听起来您可能已经禁用了该程序集的库模式。尝试重新启用它,这将告诉 Dotfuscator 自动从重命名中排除公共类型和成员。

在@Nathan的帮助下,我能够解决我遇到的问题。这是更新的混淆器.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 提供通用解决方案。所以现在使用这种方法,我希望这不仅可以自动化我的混淆过程,还可以加快速度,因为它是一种构建后事件命令方法。简而言之,我需要做的就是按"构建解决方案"按钮,然后就完成了。

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

相关内容

  • 没有找到相关文章

最新更新