在託管PE文件上使用dumpbin我可以看到它包含可選標題值中的校驗和。使用C#獲取託管PE32文件的校驗和
我希望能夠獲得該校驗和,以便我可以存儲它,並確保沒有人正在替換我們的構建機器生成的PE文件。我並不擔心這個校驗和是否具有密碼安全性,因爲我們只是用它來確定是否有人錯誤地將PE文件放在錯誤的位置,而且我們也沒有防範故意的攻擊。我不知道如何去獲取PE文件中的校驗和。 C#有一個用於獲取PE文件校驗和的託管API嗎?
如果diagram是正確的,我可以只使用一個FileStream
,檢查PE文件的正確字節,但我更願意使用.NET Framework如果在所有可能得到這個信息。
這裏是從命令dumpbin /HEADERS MyDLL.dll
的字段的圖像。我在我想要檢索的場地周圍放置一個黃色正方形。
EDIT1: 我是複雜的事情時,我說,我可以使用不安全的C#項目讀取頭。正如@xanatos指出的,我可以使用文件流來讀取頭部的字節。
EDIT2: 我刪除了關於這是否是PE32(+)文件的問題,因爲我可以確定它只是一個PE32文件。
要打開一個二進制文件(一個EXE或DLL),你不需要「不安全」的代碼......你只需要用'FileStream'打開它。 – xanatos
你知道我從來沒有真正想過這個,那應該只是一個字節流。 –
您可以使用此Windows API:[ImageNtHeader](https://msdn.microsoft.com/en-us/library/windows/desktop/ms680212(v = vs.85).aspx)。它會返回一個指向「IMAGE_NT_HEADERS」的指針,而在OptionalHeader裏面則是「Checksum」。 – xanatos