2013-03-11 41 views
2

我懷疑我們正在使用asp.net mvc的DLL已經被修改,因爲:如何確定.NET dll是否可以從Microsoft合法訪問?

  1. 沒有對微軟符號服務器沒有匹配的符號信息。
  2. 該問題的dll沒有強名。

如何確定dll是否確實來自Microsoft並且沒有更改?

PS - 我意識到這聽起來像是一個安全問題,在這種情況下它肯定是有效的,但我的意圖是找出我的前任是否包含我需要維護該項目的所有代碼。

+2

所以你有一個已知的DLL,你相信可能已被修改?您是否考慮過從可信來源(如microsoft.com)下拉新副本並確認其哈希符合您的dll? http://sourceforge.net/projects/md5summer/ – 2013-03-11 15:52:35

+3

強大的名字是一個不錯的指標。 「官方」微軟二進制文件有一個公鑰標記31bf3856ad364e35。 – vcsjones 2013-03-11 15:54:34

+0

@vcsjones它取決於程序集。 b03f5f7f11d50a3a似乎更常見。另外,b77a5c561934e089相當頻繁。 – 2013-03-11 16:36:02

回答

4

爲 「%ProgramFiles%\微軟的SDK \的Windows \ v6.0A \ BIN \ SN.EXE」 -T

例如:

"C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\sn.exe" -T c:\Windows\Microsoft.NET\Framework\v4.0.30319\system.xml.dll 

比較符合預期公衆輸出公鑰標記密鑰令牌。

值得一提的是,如果你引用一個強大的命名DLL,它總是隻會加載具有相同強名稱的DLL(你可以繞過不同的版本,但這是一個單獨的主題)。您可以通過查看csproj文件的來源來驗證正在使用的正確(合法)DLL,以確保正在使用合法的公鑰標記。

+0

...然後呢?如果DLL是合法的(或者如果不是),你會從該工具獲得什麼輸出:) – jalf 2013-03-11 16:38:47

+0

@jalf您必須與預期的標記進行比較。 – 2013-03-11 17:10:16

+0

如果包含該信息,您的答案會更有幫助。 :) – jalf 2013-03-11 17:34:50

2

如果一個組件是數字簽名的,那麼你可以確定它的所有者。他們說,一張圖片勝過千言萬語,所以這裏去...

選擇組件的問題,並查看其屬性,每個圖像下面

enter image description here

enter image description here

+1

我可以使用所有相同的信息創建一個自簽名證書,這是如何顯示該DLL是正確的? – 2013-03-11 17:11:33

+1

是的,你錯過了最後一步:認證路徑窗格應該顯示整個信任鏈,因此你可以驗證簽名程序集的所謂微軟實際上是否被其他人信任* *微軟等。 – jalf 2013-03-11 17:36:09

+0

你好@PeterRitchie,我上傳了最後一個。它只是圖像變得太大和複雜了。我是新手,因爲我覺得這是最適合這個例子的圖片。 – 2013-03-11 17:40:59

相關問題