標籤:style blog http color io os 使用 ar 檔案
當一個程式集的名稱,版本,文化,Public Key都做了設定,就可以把這個程式集叫做"強式名稱程式集"。強式名稱程式集可以防止被仿冒或篡改。本篇首先建立一個強式名稱程式集,接著類比篡改程式集,看看最終結果如何?
□ 建立一個強式名稱程式集
→在"C#程式集系列08,設定程式集版本"和"C#程式集系列09,程式集簽名"中,在F盤的as檔案夾中建立了一些檔案
→刪除所有除了.cs類型的所有檔案
→建立一個密匙
→編譯Cow.cs,並用密匙簽名
→編譯MainClass.cs,引用剛建立的Farm.dll
→運行MainClass.exe
□ 類比篡改程式集
→在F盤as檔案夾中建立Bad.cs檔案
→用記事本開啟,編寫如下,儲存
using System.IO;
class Bad
{ static void Main()
{ //把Farm.dll程式集放到流中
Stream victim = File.Open("F:\\as\\Farm.dll", FileMode.Open); byte[] buffer = new byte[victim.Length];
//把流中的內容讀到數組中
victim.Read(buffer, 0, buffer.Length);
//篡改數組中的一個元素,使用取反位操作符
buffer[1000] = (byte)(~buffer[1000]);
victim.Seek(0, SeekOrigin.Begin);
//把位元組數組重新寫回到流中
victim.Write(buffer, 0, buffer.Length);
victim.Flush();
victim.Close();
}
}
→把Bad.cs編譯成可執行檔
→運行Bad.exe,篡改了Farm.dll中的某些位元組
→再次運行MainClass.exe
總結:強式名稱程式集即使被篡改,也得不到主程式的認可。
C#程式集系列10,強式名稱程式集