[英]Referencing an Obfuscated DLL
我已將DotfuscatorCLI與Visual Studio 2015 Update 3生成后事件命令結合使用.Net DLL。 由於該命令后沒有出現錯誤,因此似乎已成功混淆。
這是命令:
dotfuscatorcli.exe / q / p = SourceDirectory =“ $(TargetDir)\\”,SourceFile = $(TargetFileName)“ $(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,I,m,n等。
為了使用該DLL,我是否在這里缺少某些東西?
任何回應,提示或解決方案將不勝感激。
聽起來您可能已為該程序集禁用了“ 庫模式 ”。 嘗試重新啟用它,這將告訴Dotfuscator自動排除公共類型和成員的重命名。
在@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進行自動化處理並提供通用解決方案。 因此,現在希望采用這種方法,因為它是構建后事件命令方法,所以不僅可以使我的混淆過程自動化,而且可以加快處理速度。 簡而言之,我需要做的就是按“構建解決方案”按鈕,然后完成。
希望這對其他人有幫助。 如果有任何歧義或疑慮,或者您有其他建議,請告訴我。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.