【发布时间】:2010-12-04 04:16:46
【问题描述】:
我使用 dotfuscator 来保护我的源代码并禁用了重命名(以保持公共方法和类名正确),但是当我使用反射器查看加密后的程序集时,我注意到它们并没有太大变化。我仍然可以看到源代码。 有什么资料吗?
【问题讨论】:
标签: asp.net dotfuscator
我使用 dotfuscator 来保护我的源代码并禁用了重命名(以保持公共方法和类名正确),但是当我使用反射器查看加密后的程序集时,我注意到它们并没有太大变化。我仍然可以看到源代码。 有什么资料吗?
【问题讨论】:
标签: asp.net dotfuscator
您可以使用Obfuscation 属性精细地指定将从重命名阶段排除的内容。例如在一个属性上:
[Obfuscation(Feature = "renaming", Exclude = true)]
public int MyProperty
{
get { return this.prop; }
}
【讨论】:
如果禁用重命名,则意味着程序集中的任何符号(方法、类型等)都不会被重命名,这会大大降低混淆的用处。
如果您只想保留可公开访问的方法的名称而不是禁用重命名,请为要从重命名中排除其公共方法的每个程序集启用 library mode。
此外,自行重命名不会导致 Reflector 不显示反编译的源代码。为了打破反编译,您需要确保也启用了控制流混淆。
【讨论】:
dotfuscator 只会混淆您的代码,它不会完全隐藏它以防窥探。
如果你真的想从 Reflector 中“隐藏”方法体,我建议你使用Clisecure。 Clisecure 可以使逻辑体消失,同时保留所有方法名。
您可以选择混淆逻辑吗?你应该使用它;这会让你的逻辑更难理解。
【讨论】: