簡體   English   中英

如何計算linux中兩個二進制文件(即兩個可執行文件)之間的差異

[英]how to compute differences between two binaries (i.e., two executables) in linux

在Linux中有沒有辦法計算兩個二進制文件(即兩個可執行文件)之間的差異?

讓我更具體一點:我想知道如何計算Linux中兩個版本的可執行文件或應用程序或軟件之間的增量(delta差異)。 例如,如果我必須僅下載並安裝現有應用程序或二進制文件的更新部分(最新版本和舊版本之間的差異),我該如何在Linux中執行此操作。

你可以使用工具bsdiff和它的伴隨bspatch來做有效的差異和二進制文件的補丁。

如果您想獲得更小的補丁,可以查看Google Chrome中的Courgette 它建立在bsdiff之上,但它們通過在進行差異之前實際拆解它們來提供更高效的可執行文件差異。 它不是作為單獨的項目分發的,但您可以從Chromium源存儲庫 (如何檢查代碼 )中獲取它。

還有xdelta工具,比bsdiff更長。 根據bsdiff的作者,效率相當低; 補丁更大。 它的優點是它支持標准的VCDIFF格式( RFC 3284 ),它也受到其他幾個工具的支持,所以如果你需要使用其他工具,它會更有用。

diff會告訴你二進制文件是否不同:

diff bin1 bin2
Binary files bin1 and bin2 differ

如果你想要差異,請使用cmp

cmp -l bin1 bin2 
  25  20 320
  26   4   3
  41 270 160
 209   4 264
 210   7   6

-l選項打印字節數和差異:

 -l --verbose Output byte numbers and values of all differing bytes. 

嘗試使用cksum - 表明它們是相同的

你可以使用diff

diff old_file new_file

您也可以使用md5,但必須比較結果。 如果md5校驗和可用,它也可以用於檢查下載文件的總和。

暫無
暫無

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

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