2009-12-16 21 views

回答

2

不,你絕對不應該爲了混淆器而損害你的項目佈局結構。

一般來說,混淆器有一個模式,你可以說「這是我的整個系統,假設沒有其他人正在做任何事情」,它有效地說,把它看作是一塊代碼。

技術,如使用internalInternalsVisibleToAttribute一起都可以使用(很多混淆器將默認爲更積極與internal東西比public東西。

凡是需要保持原樣是如System.Reflection基或dynamic可以使用ObfuscationAttribute來標記爲基礎的訪問,以告知混淆器「不要觸摸它」

還有其他折衷方案需要考慮是否將外觀圖層置於組件之間的橋樑,然後創建內部類那 - 取決於o n可能使反向工程更容易的上下文(你正在交出一個簡短的摘要)或更難(你有一個核心類,並通過其上的一些關鍵方法而不是例如提供大量的線索。重命名)。

+0

10x爲答案。你能告訴我如何在Dotfuscator中做到這一點 - 我的意思是「這裏是我的整個系統,假設沒有其他人正在做任何事情」類型的事情。 – Danail 2009-12-16 11:28:13

+0

我只知道如何在風格中做OTTOMH--它乾淨利落。但我敢肯定,在Dotfuscator中應該很容易做到,但我必須閱讀友好界面,以瞭解如何讓我們讓你這樣做......順便說一句,給我真正的10倍,你推動向上箭頭:P – 2009-12-16 11:31:58

+0

投票結果要求15聲望;) – Danail 2009-12-16 13:41:50

3

Dotfuscator完成此操作的方式是將所有程序集作爲輸入添加到Dotfuscator項目中。完成此操作後,您需要關閉整個項目的「庫」模式(從「輸入文件」選項卡,看起來像一組書籍的圖標)或每個程序集中單獨關閉。庫模式是DLL文件的默認模式,不會重命名任何公開可見的元素。

關閉庫模式後,所有方法都將被重命名,並且調用程序集中的方法也將被更新。如果您通過Reflection或延遲綁定執行任何動態調用,則需要手動從重命名中排除這些目標方法。

編輯:另一件你可以看看,可能會讓你的發行更容易是Dotfuscator的鏈接功能。這使您可以將程序集鏈接在一起(類似於ILMerge所做的),以便您可以發佈單個EXE,並將所有DLL鏈接到它或任何其他組合,以便爲最終用戶提供更少的物理文件。

+0

10倍!我會嘗試的。 – Danail 2009-12-16 19:18:12

相關問題