通過前文共同體驗了強名稱對程序集的保護方式和原理,但是這種保護的強度到底有多大呢?能有效地防御惡意篡改者嗎?先看下面的例子。
回到上篇文章的代碼清單9-7,重新對StrongNameReferenceLib項目進行強名稱簽名,然後編譯StrongName項目。在StrongName項目的bin目錄裡有StrongNam.exe和StrongNameReferenceLib.dll兩個文件,然後使用ILDasm打開StrongNameReferenceLib.dll文件,轉儲為il文件,這裡使用記事本打開il文件,如圖9-19所示。
圖9-19 StrongNameReferenceLib.dll的IL源碼
在.il文件中找到三處代碼:publickkeytoken、publickey和hash,把對應的內容都刪除,再重新使用ILAsm編譯,這時該程序集的強名稱就被成功去除。
替換程序集的強名稱方法基本相同。目前網絡上有很多去除和替換強名稱的工具,這裡不再演示。
作者:玄魂
出處:http://www.cnblogs.com/xuanhun/
查看本欄目