2011-02-23 58 views
2

我準備好爲客戶端包裝一個大項目。要求是,最後的組裝必須是單個組件。通常我將所有程序集混淆在一起,並生成單個文件。但是這一次我引用了第三方程序集,如PostSharp,Enterprise Libraries和一些特定的供應商API。混淆引用第三方程序集的程序集

當我混淆項目時,我最終得到一個組件,但它不再有效。

該項目是ACT的插件!這需要一個類來實現特定的接口。如果我構建並將所有輸出文件複製到插件文件夾,它按預期方式工作,並且ACT!會看到插件,它會工作。使用單個混淆的組件,它不再有效。法案!不會看到插件。

我只能想象,它是由這些第三方引用作爲引起我做這個先前的項目,只是從來沒有使用任何第三方組件或API。

我使用Xenocode做模糊處理,但我會嘗試任何東西。

回答

1

第一個問題likley沒有絲毫您正在使用第三方組件,但是該法案最likley接口的事實!期望及其實施被混淆。獲取Reflector甚至ILDasm並查看您感興趣的類是否實現了ACT所需的接口!

我沒有用Xenocode,但我希望它有一個方法來指定哪些類/方法不應該進行模糊處理。您的目標是讓界面及其實現免於混淆。

注:我也建議看看第三方組件的許可證要求你使用過,因爲他們可能不會允許這樣的合併。

+0

它仍然是。正如我所說的,我之前已經在一些項目上完成了這項工作(也包括ACT插件)。它恰好是這個項目不合作。 Xenocode(是)高端混淆工具之一。 – 2011-02-23 04:25:35

+0

我甚至將Xenocode設置爲不混淆任何東西,只生成一個組合件,但它仍然無法工作。 – 2011-02-23 04:34:10

+0

您是否嘗試過調試並查看失敗?即如果你將第三方DLL合併到你的程序集中,那麼他們不再工作就不足爲奇 - 即任何反射代碼都會喜歡工作。 – 2011-02-23 04:37:53

1

你不應該混淆第三方組件的原因如下:

  1. 你沒有代碼的內部運作的控制或知識,知道如何混淆它會影響其工作。即使你這樣做(例如,如果它是開放源代碼的話),如果這些程序集被混淆了,你是否願意花時間處理任何可能出現的問題?
  2. 它不是你的IP,因此混淆第三方程序集沒有什麼好處,但是你得到了#1中描述的所有不利因素。

嘗試Crypto Obfuscator - 它支持包括第三方組件,而不通過它們列爲「其他的依賴關係」混淆他們 - 你仍然落得只有一個大會以來的依賴關係被嵌入你的主要組件內,並且在提供組裝分辨率。

聲明:我LogicNP軟件,加密混淆器的開發工作。

+0

我不需要將它們混淆,只是將它們包含在單個程序集輸出中。我會試一試。 – 2011-02-24 14:33:47

+2

@logincnp:如果您宣傳自己的產品,則應在答案中明確說明,否則將其視爲垃圾郵件。有關Meta的更多信息,請參閱[this](http://meta.stackexchange.com/questions/55914/is-it-ok-to-push-your-own-product-on-so)討論。目前,您的很多答案都是收集[垃圾郵件標誌](http://meta.stackexchange.com/questions/58032/how-does-the-spam-flag-work)。 – 2011-02-24 21:23:27

+1

@ ho1 - 我認爲這已經足夠清晰,因爲我的登錄名是「logicnp」,但如果這是必需的,我一定會說清楚的! – logicnp 2011-02-25 01:35:46

相關問題