2009-04-23 95 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進行混淆代碼的序列化。