2012-03-14 92 views
0

如何使用Dotfuscator混淆WCF代理類? 我已經從他們的網站下載了Dotfuscator專業版試用版。我混淆了我的app.exe文件,一切都很好混淆,但WCF代理類不是。 (我ILDASMed的EXE)。混淆WCF代理類

WCF代理類提供了我的應用程序的結構。是否有任何設置我在Dotfuscator應用程序中缺少?

有沒有更好的隱藏WCF服務代理類的方法?

回答

1

無論如何,WCF必須能夠將服務數據合約中的元素綁定到客戶端的代理類。對代理類及其成員進行混淆幾乎沒有什麼價值,但是如果您確實想要對它們進行混淆,則可以使用[DataContract][DataMember]屬性的Name參數(例如,[DataMember Name="ID"])明確設置類型及其成員的名稱。完成此操作後,可以從「重命名 - >內置規則」選項卡中禁用「標記爲可序列化的類型和字段」內置規則,並確保在重命名 - >選項中選中了「與XML序列化程序兼容」標籤。這種方法需要注意的是,序列化屬性的名稱仍然包含在代碼中(屬性中),並且仍然通過線路發送。

如果您需要更多保護並且您可以控制服務和客戶端,那麼更好但更麻煩的選擇可能是將您的服務合約放入其自己的程序集中,並使用Dotfuscator進行處理。再次,從「重命名 - >內置規則」選項卡中禁用「標記爲可序列化的類型和字段」內置規則,並確保在重命名 - >選項選項卡中選中「與XML序列化程序兼容」。現在從服務和客戶端應用程序中引用生成的服務合約DLL。這種方法的折衷是合約成員都會有混淆的名稱(例如「a」),並且您必須在服務和客戶端應用程序代碼中引用它們。您可以檢查Dotfuscator生成的地圖文件,以瞭解重命名的名稱。

+0

我對服務和客戶端都有控制權。如您所指出的那樣,混淆服務和引用我的代碼將來會有維護問題。 Dotfuscator中有一個可以同時混淆兩者的選項嗎?通過這種方式,我構建了我的服務和客戶端以供發佈,然後混淆在一起。 – Hakim 2012-03-17 07:04:43

+0

如果是這種情況,可以將服務二進制文件,數據合同DLL和客戶端二進制文件添加到同一個Dotfuscator項目中。確保使用前面提到的相同設置,並且不要在datacontract/datamember屬性中設置Name屬性,以便Dotfuscator將重命名合同的成員。然後確保將混淆的合約DLL包含在服務器和客戶端二進制文件中。 – bsiegel 2012-03-17 22:36:16

+0

它不會對類進行混淆,因爲它說_「MyClass裝飾有System.Runtime.Serialization.DataContractAttribute。」_ – Hakim 2012-03-19 06:48:32