0

因此,我试图将使用 gcc 编译时生成的二进制文件与提供的示例可执行文件进行比较。所以我使用了命令 diff 并像这样

diff asgn2 sample-asgn2 二进制文件 asgn2 和 sample-asgn2 不同

有什么办法可以看出它们有何不同?而不是它只是显示不同。

4

4 回答 4

1

为什么不试试 Vbindiff?它可能做你想要的:

Visual Binary Diff (VBinDiff) 以十六进制和 ASCII(或 EBCDIC)显示文件。它还可以一次显示两个文件,并突出显示它们之间的差异。与 diff 不同,它适用于大文件(最大 4 GB)。

从哪里获得 Vbindiff 取决于您使用的操作系统。如果是 Ubuntu 或其他 Debian 衍生产品,apt-get install vbindiff.

于 2012-09-03T02:47:59.963 回答
1

使用 hexdump 对两个二进制文件进行十六进制转储。然后你可以使用你最喜欢的差异工具来比较十六进制转储,比如 kdiff3、tkdiff、xxdiff 等。

于 2012-09-03T02:52:06.947 回答
0

我正在使用 Linux,在我的情况下,我需要一个 -q 选项来显示你得到了什么。

diff -q file1 file2

如果没有 -q 选项,它将显示哪一行不同并显示该行。

您可以检查 man diff 以查看在您的 UNIX 中使用的正确选项。

于 2012-09-03T02:46:58.023 回答
0

vbindiff只做逐字节比较。如果只有一个字节添加/删除,它将标记所有后续字节更改...

另一种方法是将二进制文件转换为文本文件,以便与文本差异算法进行比较。

colorbindiff.pl是一个简单且开源的 perl 脚本,它使用此方法并显示彩色并排比较,就像在文本差异中一样。它突出显示字节更改/添加/删除。它在GitHub上可用。

colorbindiff 输出快照

于 2020-04-03T17:28:41.730 回答