2011-07-28 125 views
4

我在編譯的網站上使用SmartAssembly模糊處理工具進行實驗。它適用於大部分代碼,但App_Code中的任何類未被混淆。例如我在App_Code中擁有以下課程SmartAssembly跳過模糊處理

public class Helper 
{ 
    public Helper() 
    { 
    } 

    public static String GetData() 
    { 
     String text = DateTime.Now.ToString(); 
     return text; 
    } 

    ---Other methods---- 
} 

此輔助程序類被跳過。它不會對Helper類及其方法命名。 任何使用SmartAssembly的人都可以在這方面提供幫助嗎? 是否還有其他一些成本效益較高的工具(免費或付費)比SmartAssembly更好。

回答

8
  • 聲明:我展鵬上工作SmartAssembly *

SA(SmartAssembly)自動排除在從困惑和修剪的DLL公共成員,因爲它假設,他們將在外部使用。您可以通過編輯saproj文件進行混淆線看起來像覆蓋此行爲:

<Obfuscation ExcludePublicMembers="0" Obfuscate="1"> 

這將混淆所有成員,不論其公開狀態。

這可能會導致問題,因爲IIS可能使用反射來查找具有特定名稱的特定公共成員。在這種情況下,您需要從修剪/混淆中排除這些項目。

至於混淆工具,SmartAssembly是一個功能強大的混淆器(黑客同意!),並且有很多額外的功能(錯誤報告,功能使用報告等)。但是,當然,除了SmartAssembly外,還有一些數字,例如Dotfuscator或深海混淆器。有些非常好,有些非常糟糕。

如果你有任何更多的問題,來問我們:http://www.red-gate.com/products/dotnet-development/smartassembly/support

+1

感謝。我需要完全控制哪一個模糊或不模糊。例如,我可以爲所有公共成員啓用該功能,但排除應用了[WebMethod()]屬性的功能。可能嗎? – kumar

+1

我嘗試使用設置。它不起作用。測試我的例子。將代碼放入Classlibrary中,構建它,更改saproj但仍然無法混淆。另一件事是它總是覆蓋我的saproj文件。必須有一種方法來控制UI中的設置。我試過Crypto Obfuscator,它在混淆和價格方面似乎也好多了。 – kumar

+0

我應該說:要確保它的相關節點下,如: <混淆ExcludePublicMembers =「0」模糊處理=「1」 –

2

public方法默認情況下不會被混淆(在DLL中 - 它們在exes中)。您可以強制混淆,但您需要使用代碼裝飾。更多詳情can be found here