2009-09-14 32 views
1

我想知道在運行該文件之前或之後在.exe文件上生成校驗和時是否會得到不同的結果。我更關心常見的做法(比如像firefox.exe那樣生成流行應用程序的SHA哈希),而不是邊界情況,但兩者都很有趣。謝謝。散列的.exe文件

回答

7

只要文件是相同的(即僅包含相同的字節,以相同的順序),文件的散列應該是恆定的。很難找到在運行時重寫磁盤表示的應用程序,所以散列應該是是恆定的。有自我修改的程序,但它們傾向於在內存加載的代碼副本上運行,而不是磁盤副本。

編輯:我們應該考慮「自我更新」應用程序,但這些應用程序往往會啓動一個小幫手程序來下載和更新核心應用程序。在運行時更新執行很困難(特別是在Windows上)。 UNIX系統傾向於在寫入系統上運行復制,所以軟件更新可能會改變腳下的可執行文件 - 但這又是一個「角落案例」。

+2

此類exe文件的磁盤上修改可能會被任何病毒檢查程序標記爲「病毒樣」行爲。 – 2009-09-14 22:41:16

+0

exe文件本身是否會有組件或「資源」,比如說包含可能因運行exe而改變的配置數據? – Brian 2009-09-14 22:50:39

+0

@布萊恩,通常不會 - 配置數據幾乎總是單獨存儲 – bdonlan 2009-09-14 23:19:26

2

只有當exe改變時,散列纔會改變。這隻會發生,如果應用程序修改自己,這是不會在沒有應用程序重新啓動的窗戶上發生。 Firefox可能會自行更新(包括重新啓動),但除了這些情況之外,哈希將保持不變。

2

如果文件更改,散列值將會改變。

EXE文件很少會自行更改。如果用戶更新到新版本,則會更改firefox.exe

運行後可以檢查EXE文件(如firefox.exe)的「修改日期」屬性是否已更改,但您可能會發現它沒有更改。

1

如果您的意思是修改上次訪問時間,請不要擔心,它存儲在文件系統級別,而不是在文件中,因此散列保持不變。