比较可执行文件或目标文件

我有两个文件,应该从相同的源版本生成。 其中一个文件被剥离。 可以比较文件的原始可执行部分来确定它们是否相同? 也可以在目标文件(特别是.ko linux内核模块)上完成?

最好的祝福

我会尝试使用

objdump -d file1>a objdump -d file2>b diff ab 

或者正如F.Hauri所建议的那样,

 diff <(objdump -d file1) <(objdump -d file2) 

-d选项反汇编文件的可执行部分。

但是,不同的编译器总是会产生不同的字节,因此也就是汇编,代码。 此外,我不确定可执行文件中的目标文件的顺序,如果有多个。 对于使用应该工作的相同编译器编译的目标文件。

您可以运行objdump -x <file>来列出程序的各个部分,然后objcopy -j <section> <file> <out>来提取这些部分并进行比较。

你会想要跳过调试部分,并检查喜欢.text.data

检查两个文件是否相同的简单方法是md5。 您可以通过执行以下操作检查文件的md5sum:

 $ md5sum file.txt 

对于许多文件,请执行:

$ md5sum *