我正在编译的网站上试验SmartAssembly混淆工具。它适用于大多数代码,但App_Code中的任何类都没有被混淆。例如我在App_Code中有以下课程
public class Helper
{
public Helper()
{
}
public static String GetData()
{
String text = DateTime.Now.ToString();
return text;
}
---Other methods----
}
跳过此助手类。它没有在Helper类及其方法上进行名称修改。 任何使用SmartAssembly的人都能在这方面提供帮助吗? 是否有一些其他具有成本效益的工具(免费或付费)比SmartAssembly更好。
答案 0 :(得分:9)
SA(SmartAssembly)会自动将DLL中的公共成员排除在混淆和修剪之外,因为它假定它们将在外部使用。您可以通过编辑saproj文件来覆盖此行为,以使混淆行看起来像:
<Obfuscation ExcludePublicMembers="0" Obfuscate="1">
这将使所有成员混淆,无论他们的公共身份如何。
这可能会导致问题,因为IIS可能会使用反射来查找具有特定名称的特定公共成员。在这种情况下,您需要从修剪/混淆中排除这些项目。
对于混淆工具,SmartAssembly是一个非常强大的混淆器(黑客同意!),并且有很多附加功能(错误报告,功能使用报告等)。但是,当然,SmartAssembly之外还有一些,例如Dotfuscator或Deep Sea Obfuscator。有些相当不错,有些非常糟糕。
如果您还有其他问题,请在http://www.red-gate.com/products/dotnet-development/smartassembly/support
询问我们答案 1 :(得分:2)
public
方法默认情况下不会被混淆(在DLL中 - 它们在exes中)。您可以强制进行模糊处理,但需要使用代码修饰。更多详情can be found here。