2011-12-28 17 views
4

我對使用校驗和編譯的可執行文件的驗證有疑問: 如果我從src構建項目,最終會生成可執行文件,將其稱爲exec1.exe,其中包含一些元數據。 如果我以後重建相同的確切的src,我得到另一個可執行文件,說exec2.exe,它也有它自己的元數據部分。比較從相同的確切來源構建的兩個可執行文件的校驗和

如果我爲兩個文件中的每一個創建校驗和,它們會有所不同,因爲這兩個文件之間的元數據信息是不同的。 有沒有人知道在我對文件執行校驗和時繞過元數據的方法,以便不管元數據如何,對兩個文件執行校驗和將導致相同的校驗和值?或者如何編譯二進制文件,只要src是相同的,我最終會得到相同的可執行文件?

預先感謝您的輸入, 問候

+0

這個元數據存儲在PE數據中的哪個位置?你有隔離嗎? – ildjarn 2011-12-28 02:45:18

回答

0

如果您還有pdb文件,則可以使用DIA sdk查詢用於構建可執行文件的所有源文件。基本上列舉了所有的IDiaSourceFile並且每個IDiaSourceFile具有get_checksum方法。您可以生成主校驗和,該校驗和是用於生成可執行文件的源文件的所有校驗和的組合。如果任何源文件的任何校驗和發生了變化,您可以假設可執行文件也已更改。

這與Visual Studio用來確定源文件是否與pdb同步的機制相同,以便它可以進入調試目的。

相關問題