因此,我试图将使用 gcc 编译时生成的二进制文件与提供的示例可执行文件进行比较。所以我使用了命令 diff 并像这样
diff asgn2 sample-asgn2 二进制文件 asgn2 和 sample-asgn2 不同
有什么办法可以看出它们有何不同?而不是它只是显示不同。
因此,我试图将使用 gcc 编译时生成的二进制文件与提供的示例可执行文件进行比较。所以我使用了命令 diff 并像这样
diff asgn2 sample-asgn2 二进制文件 asgn2 和 sample-asgn2 不同
有什么办法可以看出它们有何不同?而不是它只是显示不同。
为什么不试试 Vbindiff?它可能做你想要的:
Visual Binary Diff (VBinDiff) 以十六进制和 ASCII(或 EBCDIC)显示文件。它还可以一次显示两个文件,并突出显示它们之间的差异。与 diff 不同,它适用于大文件(最大 4 GB)。
从哪里获得 Vbindiff 取决于您使用的操作系统。如果是 Ubuntu 或其他 Debian 衍生产品,apt-get install vbindiff
.
使用 hexdump 对两个二进制文件进行十六进制转储。然后你可以使用你最喜欢的差异工具来比较十六进制转储,比如 kdiff3、tkdiff、xxdiff 等。
我正在使用 Linux,在我的情况下,我需要一个 -q 选项来显示你得到了什么。
diff -q file1 file2
如果没有 -q 选项,它将显示哪一行不同并显示该行。
您可以检查 man diff 以查看在您的 UNIX 中使用的正确选项。
vbindiff
只做逐字节比较。如果只有一个字节添加/删除,它将标记所有后续字节更改...
另一种方法是将二进制文件转换为文本文件,以便与文本差异算法进行比较。
colorbindiff.pl
是一个简单且开源的 perl 脚本,它使用此方法并显示彩色并排比较,就像在文本差异中一样。它突出显示字节更改/添加/删除。它在GitHub上可用。