5

我有一组二进制配置文件,每个文件有三个版本——一个原始版本,每个文件有两个不同修改的版本。我需要能够同时看到两个版本之间的差异以及原始版本之间的差异。

我需要的是二进制文件的三向差异工具。通过相当累人的谷歌搜索,我最终偶然发现了一个应用程序的屏幕截图,该应用程序完全符合我的需要——不幸的是,包含该图像的论坛帖子没有提及他们正在使用的应用程序:

http://www.xboxhacker.org/index.php?topic=15032.0

有人可以指出我提供三个二进制文件的二进制安全(十六进制)比较的(Windows)应用程序的方向吗?

4

5 回答 5

10

Vim 有一个内置的 diff 工具,可以比较任意数量的文件。它也可以在 Windows 上运行。你可以在http://vim.org找到它。

Windows 的 vim 标准安装包括xxd,它允许您将二进制文件视为文本:

因此,例如,如果您尝试:

xxd xxd.exe

你会得到:

0000000: 4d5a 9000 0300 0000 0400 0000 ffff 0000  MZ..............
0000010: b800 0000 0000 0000 4000 0000 0000 0000  ........@.......
0000020: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000030: 0000 0000 0000 0000 0000 0000 d800 0000  ................
0000040: 0e1f ba0e 00b4 09cd 21b8 014c cd21 5468  ........!..L.!Th
0000050: 6973 2070 726f 6772 616d 2063 616e 6e6f  is program canno
0000060: 7420 6265 2072 756e 2069 6e20 444f 5320  t be run in DOS 
0000070: 6d6f 6465 2e0d 0d0a 2400 0000 0000 0000  mode....$.......
0000080: 6ba7 bec3 2fc6 d090 2fc6 d090 2fc6 d090  k.../.../.../...

ETC...

因此,您可以使用xxd将二进制文件转储到文本文件中:

xxd orig > orig.txt
xxd mod1 > mod1.txt 
xxd mod2 > mod2.txt

然后在 diff 模式下运行 vim:

vim -d orig mod1 mod2

这会给你这样的东西:

三路 vimdiff 示例

(这个截图是从这里截取的,只不过是 VIM 中 3-way diff 的一个说明)

所有这些工具都可以在 Windows 中使用,因此它们应该可以解决您的问题。

编辑:

合并结果后xxd,您可以使用以下命令将十六进制转储转换为二进制文件xxd -r

xxd -r merged_xxd_file merged_binary_file

您可以在的手册页中查看更多详细信息和选项xxd

于 2010-12-30T09:42:32.667 回答
2

截图来自Araxis Merge。他们的专业版(270 美元)支持 3 路比较。

于 2011-01-04T20:18:13.313 回答
2

你可以看看ECMerge(我使用的一个工具),它有二进制文件(HEX + ASCII)的 2 路和 3 路差异。没有合并功能。您可以轻松地从更改区域移动到更改区域并压缩长区域(长插入、更改或未更改)。

于 2011-12-10T15:08:49.287 回答
0

Beyond Compare最新版本似乎支持3-way diff 和 merge。此外,它的功能列表说它支持二进制文件的比较。

请注意,这不是免费软件 :-)

于 2010-12-30T16:22:27.803 回答
0

我最近被介绍给p4merge,它似乎也支持二进制文件。

它需要 3 个文件作为输入:原始文件和两个衍生文件。它并排显示它们,带有显示合并文件的第四个窗口,具有编辑功能和冲突解决。

我只是用它来合并一个大型代码库的两个分支,非常方便。

p4merge 示例

现在,我还没有使用它来合并二进制文件,但它确实支持差异图片,所以如果不支持二进制文件,我会感到惊讶。

于 2014-07-15T20:29:39.143 回答