
用C#寫的桌面小程式。
假設會有無聊攻擊者給小程式加個病毒再傳播,
我想如果能給小程式做個防篡改檢測,如果檢測到程式被篡改,就彈出提示,讓用戶不要使用(最好能夠不要運行)。
假設無聊攻擊者并不會反編譯之類的,不用考慮偷了原始碼復制修改,它們只會用傻瓜式病毒注入exe中。
網上搜了一下,VS自帶有“強名稱程式集簽名”。
但問題是,這個功能設計初,只是為了防止dll重名出錯,且不說很容易就去除跳過強名稱簽名檢測,
更主要的問題是,我這桌面小程式,參考了一些沒有強名稱數字簽名的開源dll,而根據規則,強名稱簽名必須所有參考的dll也都已經有數字簽名。很明顯,我不能拿人家開源的東西簽自己的名字。
那如果自己寫檢測,怎么搞?如果算一下本程式檔案的hash,可以,怎么比較呢?如果我把應該正確的hash值記到本程式里,那本程式的hash不又變了嗎?如果記到另外一個檔案dll里,那人家直接修改一下不就認假為真了?。。
實時連到網上檢查一下?那要增加網路通信,太麻煩了。
我不需要完全反編譯防篡改,只想要篡改檢測提示這種,怎么實作?
uj5u.com熱心網友回復:
我想了一下,這好像跟“合法性檢查”“有效性檢驗”有點類似。比如我傳一段資料,末尾額外添加一個值,通過某種演算法, 前面資料算出來的結果跟檢驗值相同,才能算有效。
但是,這個檢驗值怎么存?
uj5u.com熱心網友回復:
md5嗎???轉載請註明出處,本文鏈接:https://www.uj5u.com/net/269635.html
標籤:C#
