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