簡體   English   中英

用於區分Windows二進制文件的工具?

[英]tools for diffing windows binaries?

我們的QA團隊希望根據EXE和DLL在構建之間實際發生的變化來集中測試。 我們有一個很好的svn更改報告,但源和更改的二進制文件之間的關系並不總是很明顯。 我們正在比較的構建總是完全干凈的構建,因此我們不能使用文件系統時間戳。 我正在尋找工具來比較Windows(和Windows CE)PE二進制文件,它們將忽略嵌入的時間戳和其他錯誤。 有關工具或其他方法的任何建議,以生成可靠的“二進制文件真正改變了”報告嗎? 謝謝。

澄清:感謝目前為止的答案,但我們不能通過直接的逐字節比較或比較校驗和來生成報告,因為每次構建時所有文件都顯示不同,即使源沒有更改,因為編譯器插入的時間戳。 問題是如何忽略誤報。 我認為,反匯編和比較的想法最接近我們的需要......

回答! Bindiff就是我想要的。 非常感謝。

你看過Bindiff嗎?

我之前遇到過這個問題。 我的解決方案是編寫一個工具,將.EXE / .DLL中的所有時間戳設置為已知值。 我會將它作為構建后步驟運行。 那么二進制差異就可以了。

你也許可以反匯編二進制文件,然后在程序集上做一個差異...

這聽起來像你的QA團隊采取了錯誤的方法......對他們而言,代碼看起來並不重要; 只是它做了它應該做的事情。

編輯:哦! 在再次閱讀之后,我意識到我誤解了你的問題。 我以為他們想測試改變的方法......

在這種情況下,為什么不獲取MD5哈希值並進行比較呢? 最微小的變化將導致生成完全不同的哈希。

不確定是什么類型的二進制文件(DLL?僅限PE / WinCE可執行文件?其他?)是否可以在二進制文件中嵌入版本信息,例如使用源代碼控制標記在提交時更新源代碼中的版本。 然后,當創建新構建時,二進制文件也會更新它的版本字符串。 您可以使用版本字符串並檢查更改,而不必區分二進制文件。

看看NDepend

當我在我的公司使用“自家種植”工具進行安裝驗證時,我們使用Beyond Compare作為后端進行比較。

它具有出色的文件/文件夾比較(二進制文件)和腳本功能,可以輸出XML報告。

項目依賴圖生成器Dependency-Grapher for C ++ - 項目都使用GraphViz來可視化依賴項。 我想你可以使用它們中的任何一個作為你需要的基礎,特別突出顯示源文件或其他葉子已經改變的依賴圖中的分支。

MD5哈希或校驗和(如上所述),一個簡單的diff忽略空格並過濾掉注釋更改,或者來自版本控制系統的changlist信息可以指示哪些文件已更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM