我剛剛通過我們的german VB.NET forums,有一些有趣的事情讓我感到頭疼。驗證.NET Framework程序集
它實際上可以通過編輯使用ReflexIL或其他IL編輯器的.NET Framework程序集。唯一必須繞過的是裝配體的強名稱簽名。更改裝配IL後,您必須運行sn.exe -Vr [assemblyname]
以略過強名稱驗證。之後,您必須清除緩存的本機映像。只需瀏覽C:\Windows\assembly
目錄並刪除與裝配相關的所有圖像。然後重啓。當您登錄時,運行ngen install [assemblyname]
。現在生成新的原生圖像。
This Works。我在我的虛擬環境(Windows XP x86)中驗證了此過程。現在讓我最擔心的是你可以輕鬆繞過RSACryptoServiceProvider
的.NET VerifyHash
或VerifyData
方法。這實際上也起作用。我和我的一個朋友測試可以驗證這個問題(see screenshots)。這很容易。
例如,如果我創建構建在.NET Framework加密類許可制度,它可以被繞過全系統爲使用框架系統上的每個 .NET應用程序。此外,每個人都可以日誌和更改函數的輸入,我只是通過掛鉤方法調用。
現在我的問題是: 由於這可能是一個巨大的問題,我該怎麼做呢?當然,惡意用戶可以編輯我的應用程序,但這並不像在系統範圍內那樣糟糕。 我正在考慮一些框架校驗和驗證,但由於.NET框架有很多不同的更新,這似乎是不可能的。
任何解決方案或建議?微軟是否以某種方式處理這個問題?
您需要再次進行整個練習,但這次沒有管理員用戶名和密碼。在威脅分析中這是一個常見的謬誤,當入侵者擁有鑰匙時,沒有必要鎖門。 –
另外,許可證制度一般都是徒勞無益的。 –