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

mas*_*sti 5 linux compare strip elf

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

最好的祝福

Mar*_*ina 5

我会尝试使用

objdump -d file1>a
objdump -d file2>b
diff a b
Run Code Online (Sandbox Code Playgroud)

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

diff <(objdump -d file1) <(objdump -d file2)
Run Code Online (Sandbox Code Playgroud)

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

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

  • 使用 [tag:bash],您可以编写:`diff &lt;(objdump -d file1) &lt;(objdump -d file2)`,而无需使用临时文件!;-) (2认同)

rod*_*igo 3

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

您需要跳过调试部分并检查诸如.text, .data...