強名稱保護

2022-02-01 19:47:09 字數 567 閱讀 2854

用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 計算機範圍內的 快取,它儲存專門安裝的程式集,這...