用vs籤強名稱我會
sdk中
sn -k key.snk
csc keyfile key.snk *.cs
強名稱的去除:
clr頭中的flag項,去除comimage_flags_strongnamesigned標誌
clr頭中的strongnamesignature, rva與size為0
assembly表中的flags項,送去0x0001 (publickkey標識),通常變後為0x0000(sidebysidecompatible)
assembly表中的publickey項,指向blob的偏移,用0填充
利用工具
strong name remove工具
re-sign工具
**中讀強名稱
assembly e = assembly.getexecutingassembly();
byte publickey = e.getname().getpublickey();
byte publickeytoken = e.getname().getpublickeytoken();
強名稱(3)強名稱的脆弱性
通過前文共同體驗了強名稱對程式集的保護方式和原理,但是這種保護的強度到底有多大呢?能有效地防禦惡意篡改者嗎?先看下面的例子。回到上篇文章的 清單 9 7,重新對 strongnamereferencelib 專案進行強名稱簽名,然後編譯 strongname 專案。在 strongname 專案的b...
強名稱程式集不能引用非強名稱程式集
想生成乙個強名稱程式集,引用了乙個非強名稱程式集裡的型別,結果在編譯時出錯 error cs1577 程式集生成失敗 引用的程式集 mytypes 沒有強名稱 檢視msdn中編號為cs1577的編譯器錯誤,顯示如下資訊 程式集生成失敗 原因 編譯的程式集生成部分失敗。有關更多資訊,請參見 alink...
為何使用強名稱,publickeytoken的作用
概念 一 dotnet中的版本組成 dotnet中的版本由4個物理號碼組成,如圖 一 圖 一 在程式集裡面,我們可以通過加上assemblyversion特性來設定它,如 assembly assemblyversion 2.0.2.11 二 gac 計算機範圍內的 快取,它儲存專門安裝的程式集,這...