2009-04-23 94 views
3

当我试图在我的应用程序中使用dotfuscate,我得到一个应用程序错误,当我运行它。如何安全地使用混淆器?

+1

你能告诉我们的错误是什么? – 2009-04-23 17:41:03

+1

不坚持在obfustacator你的手指,除非你需要一个肾了。 – 2009-04-23 17:45:55

回答

9

大多数我曾与混淆遇到的问题都围绕着不能有自己的名字改成类型,因为有些东西需要反思他们(代码或运行时)。

例如,如果您有正在使用的Web服务代理类,你不能安全地混淆类名称:

public class MyWebServiceProxy : SoapHttpClientProtocol 
{ 

} 

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

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

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

Dotfuscator的(和所有的混淆器)通常是安全上的应用程序运行,但它们确实偶尔会出现问题。没有你的问题的具体细节,很难诊断。

然而,混淆器一个共同的问题是,当你与反射混合。由于您正在更改类型名称,但不更改字符串,所以只要尝试反思具有特定字符串名称的对象,并使用反射名称空间构造对象,就可能会出现问题。

0

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