強名稱(3)強名稱的脆弱性

2021-09-09 05:14:47 字數 874 閱讀 2018

通過前文共同體驗了強名稱對程式集的保護方式和原理,但是這種保護的強度到底有多大呢?能有效地防禦惡意篡改者嗎?先看下面的例子。

回到上篇文章的**清單

9-7,重新對

strongnamereferencelib

專案進行強名稱簽名,然後編譯

strongname

專案。在

strongname

專案的bin

目錄裡有

strongnam.exe

和strongnamereferencelib.dll

兩個檔案,然後使用

ildasm

開啟strongnamereferencelib.dll

檔案,轉儲為

il檔案,這裡使用記事本開啟

il檔案,如圖

9-19

所示。

圖9-19strongnamereferencelib.dllil原始碼

在.il

檔案中找到三處**:

publickkeytoken

、publickey

和hash

,把對應的內容都刪除,再重新使用

ilasm

編譯,這時該程式集的強名稱就被成功去除。

替換程式集的強名稱方法基本相同。目前網路上有很多去除和替換強名稱的工具,這裡不再演示。

----------------------------注:本文部分內容改編自《.net 安全揭秘》

強名稱保護

用 籤強名稱我會 中 sn k key.snk csc keyfile key.snk cs 強名稱的去除 頭中的flag項,去除comimage flags strongnamesigned標誌 頭中的strongnamesignature,與 為 表中的 項,送去0 0001 標識 通常變後為0...

強名稱程式集不能引用非強名稱程式集

想生成乙個強名稱程式集,引用了乙個非強名稱程式集裡的型別,結果在編譯時出錯 error cs1577 程式集生成失敗 引用的程式集 mytypes 沒有強名稱 檢視msdn中編號為cs1577的編譯器錯誤,顯示如下資訊 程式集生成失敗 原因 編譯的程式集生成部分失敗。有關更多資訊,請參見 alink...

為何使用強名稱,publickeytoken的作用

概念 一 dotnet中的版本組成 dotnet中的版本由4個物理號碼組成,如圖 一 圖 一 在程式集裡面,我們可以通過加上assemblyversion特性來設定它,如 assembly assemblyversion 2.0.2.11 二 gac 計算機範圍內的 快取,它儲存專門安裝的程式集,這...