2011-07-28 88 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