2010-01-20 58 views
5

我需要提供所有程序集的32位CRC(循環冗餘校驗),它被存儲(用於發佈控制目的),然後可以與稍後系統中存在的程序集進行比較(在爲了檢查版本沒有以某種方式損壞)。.NET程序集有沒有改變?

我沒有問題,計算組件本身的CRC,我的問題是這樣的:

千萬.NET程序集永遠改變嗎?即在目標系統上安裝該組件後,實際的二進制內容是否會因任何原因而發生變化?如果是這樣,那麼CRC也會改變。

請注意,我只提到與我的軟件打包在一起的程序集,而不是標準的系統程序集,這些程序集未被檢查。

乾杯

+0

這不是簽署你的程序集的目的嗎? – Svish 2010-01-20 11:53:34

+0

這更多歸功於我公司的發佈管理方法。 CRC的發展主要來源於過去的嵌入式開發,而這一過程正在任何Windows開發工作中實施。 – Kazar 2010-01-20 11:55:11

回答

6

你正在重新發明一個車輪,強大的命名已經做到了這一點。篡改一個程序集使其具有正確的CRC32非常簡單。打破一個強名不是,它是密碼保密的。

+0

是的,.NET已經有一個內置的機制來處理你的需求,你應該更喜歡自定義的方法。 – 2010-01-20 12:08:58

+0

感謝您的替代建議,並且您是對的,但這是一種首選方法,但是,這是由更多高級工程師決定的公司政策。不是我可以做的很多。 – Kazar 2010-01-20 16:22:24

4

如果不更新組件(覆蓋它們),他們將永遠不會改變。

+0

或者程序集可能會重新簽名 – 2010-01-20 14:00:48

-1

我記得在某處,.net優化器搜索並通過任何程序集來「優化」它們嗎?聽說它在安裝後做了這個 - 從來沒有看過它自己雖然 - ID想象他們可能不會改變,但我不知道它的東西,你真的可以保證

試試看看!祝你好運

+3

您正在討論Ngen.exe。它創建另一個文件。 – 2010-01-20 12:03:39

0

他們只應在安裝或更新時進行更改,除非程序員在程序中包含一些令人討厭的黑客行爲。但是,如果您有疑問,爲什麼不撤銷寫入或修改相應文件的用戶權限?