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

问题描述:

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

问候

您可以运行objdump -x <file>列出计划的部分,然后objcopy -j <section> <file> <out>提取的部分并加以比较。

你想跳过调试节和检查.text喜欢,.data ...

我会尝试使用

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

,或者如F.Hauri建议,

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

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

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

+1

使用[标签:庆典],你coud写:'DIFF 2015-03-02 11:08:12

+1

试一下'diff -y ... |在一个宽广的控制台中减少“S” – 2015-03-02 11:10:28

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

$ md5sum file.txt 

对于许多文件,这样做:

$ md5sum *