2

我們即將在由應用程序的其他組件引用的強命名的.NET程序集中實現許可算法。當然,我們希望將有人交換包含許可證檢查的程序集以及通過解鎖應用程序功能的風險降至最低。是否有可能用一個用不同的密鑰簽名的強名稱的程序集替代?

據我所知,您可以將程序集重定向到不同的版本(通過發佈者策略或在應用程序配置文件中)。但是我還沒有找到一種方法來重定向到另一個名字的組合或用另一個鍵簽名的程序集。

是否有其他方法影響程序集綁定,以便使用使用不同密鑰簽名的程序集?如果存在,繞過該算法需要付出多少努力?

+0

不可能,但...努力?少於1分鐘 - 禁用驗證和延遲標誌。 –

回答

2

不,不可能重定向到不同的Assembly版本。不同的名稱或強名稱是not possible with assembly redirects

有可能規避這一點。一個技術性但簡單的方法是簡單地反彙編所有強有名的程序集並重新編譯它們,而不用強名稱。使用ildasm和ilasm或使用PE編輯器很容易。見herehere。當你反編譯它時,爲什麼不去除任何許可證檢查?除非能夠防止反編譯,否則混淆器不會有幫助。已經提到的另一種方式可能是使用公鑰延遲簽署新程序集並關閉程序集驗證。或者由於GAC中的裝配僅在安裝期間得到驗證,您可以使用replace an existing assembly in the GAC。最後兩個確實需要管理權限。

相關問題