2014-09-25 42 views
7

我想用eazfuscator.net混淆一個.net項目。問題是,當我使用.NET Reflector對其進行反編譯時,您可以看到很多代碼。所有私人成員都被混淆了,但公衆成員提供了有關該計劃的許多信息。eazfuscator公共成員沒有模糊

是否有可能混淆我的圖書館的公共成員?我知道這不是由程序完成的,因爲公共成員通常是從其他程序集訪問的。但是難道不應該混淆整個解決方案,以便其他程序集的訪問也可以從該工具重命名?

我已經嘗試使用ObfuscationAttribute

[assembly: Obfuscation(Feature = "Apply to type * when public: renaming", 
         Exclude = false)] 

但它並沒有真正使任何區別。

那麼有可能做這樣的事情與eazfuscator或可能是另一種工具?

回答

3

通常,混淆器不會混淆公共/受保護的成員。

他們這樣做是有原因的,假設你有一個程序集中的公共成員(讓我們說一個dll)。通常創建程序集以共享代碼,如果混淆器更改了成員和類名稱會怎樣?當另一個程序集依賴於它時,這將如何工作?

如果你想混淆一個類,爲什麼它首先是public?如果不打算在組件外使用,則始終可以使其成爲internal

Obfucsators擅長處理內部類型/成員。它不僅混淆了類的成員,還會進一步重命名類本身。您可以考慮使用Phoenix protector。我希望它也可以配置爲混淆公衆成員。

更新:

一種選擇是合併所有相關組件,以巨單組件(EXE),然後用模糊的合併組裝混淆公共成員選項。通過這種方式,您可以在不破壞任何內容的同時混淆公共成員。

+0

所以Phoenix保護器也可以爲公共成員配置,但它打破了功能,因爲有依賴於該庫的程序集。我只是認爲應該可以將這些程序集混淆在一起,以便兩個程序集中的名稱以與程序相同的方式進行更改。 – 2014-09-26 06:25:36

+0

@DanielWaidele我不認爲你會在免費的混淆工具中獲得這樣的功能。儘管我不確定,但您可以使用商業工具。 – 2014-09-26 06:31:08

+0

您可以考慮將所有程序集合併爲一個,然後混淆公共成員。 – 2014-09-26 06:32:53