3

当我尝试在我的应用程序上使用 dotfuscate 时,我在运行它时收到一个应用程序错误。

4

3 回答 3

10

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

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

于 2009-04-23T17:41:49.893 回答
9

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

例如,如果您有一个用作 Web 服务代理的类,则不能安全地混淆类名:

public class MyWebServiceProxy : SoapHttpClientProtocol
{

}

还有一些混淆器不能处理泛型方法和类。

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

[global::System.Reflection.Obfuscation(Exclude=true, Feature="renaming")]
于 2009-04-23T17:41:04.980 回答
0

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

于 2009-04-23T19:33:53.150 回答