我如何安全地使用混淆器?

时间:2009-04-23 17:36:51

标签: c# .net obfuscation dotfuscator

当我尝试在我的应用程序上使用dotfuscate时,运行时出现应用程序错误。

3 个答案:

答案 0 :(得分:10)

Dotfuscator(和所有混淆器)通常可以安全地在应用程序上运行,但它们偶尔会导致问题。如果没有问题的具体细节,就很难诊断出来。

然而,混淆器的一个常见问题是当你将它们与反射混合时。由于您要更改类型名称而不是字符串,因此每次尝试反映具有特定字符串名称的对象,并使用反射命名空间构造对象时,您可能会遇到问题。

答案 1 :(得分:9)

我在混淆中遇到的大多数问题都围绕着无法更改名称的类型,因为某些东西需要反映它们(您的代码或运行时)。

例如,如果您有一个用作Web服务代理的类,则无法安全地模糊类名:

public class MyWebServiceProxy : SoapHttpClientProtocol
{

}

另外一些混淆器无法处理泛型方法和类。

技巧是您需要找到这些类型并防止混淆器重命名它们。这是通过Obfuscation属性完成的:

[global::System.Reflection.Obfuscation(Exclude=true, Feature="renaming")]

答案 2 :(得分:0)

混淆器可能存在的另一个问题是使用BinaryFormatter进行序列化,因为它会更改字段名称。由于这个原因,我有一些用户使用protobuf-net对其混淆代码进行序列化。