我会尝试使用
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 选项反汇编文件的可执行部分。
但是,总是有可能不同的编译器会生成不同的字节代码,因此也生成不同的汇编代码。另外,我不确定可执行文件中目标文件的顺序,如果有多个。对于使用应该工作的相同编译器编译的目标文件。
您可以运行objdump -x <file>来列出程序的各个部分,然后objcopy -j <section> <file> <out>提取这些部分并进行比较。
您需要跳过调试部分并检查诸如.text, .data...