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

ogsagwnx  于 2023-03-17  发布在  Linux
关注(0)|答案(5)|浏览(201)

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

lbsnaicq

lbsnaicq1#

我会试着用

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

或者,如F.Hauri所言,

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

-d选项反汇编文件的可执行部分。
然而,不同的编译器总是有可能生成不同的字节,因此,汇编,代码。此外,我不确定目标文件在可执行文件中的顺序,如果有多个. for目标文件是用应该工作的同一个编译器编译的。

yhqotfr8

yhqotfr82#

您可以运行objdump -x <file>列出程序的各个部分,然后运行objcopy -j <section> <file> <out>提取这些部分并进行比较。
您可能希望跳过调试部分,并检查.text.data等。

wz3gfoph

wz3gfoph3#

elf_diff比较ELF文件(对象文件、共享库、存档...),并生成差异的HTML或PDF报告。它的重点在于探索汇编级变化和资源消耗。相似性检测引擎执行符号名称和汇编代码之间的模糊匹配,并从比较的二进制文件中呈现可能相关的符号对,例如,由于已被重命名。elf_diff有助于理解高级语言代码(如C或C++)的更改对程序存储和静态RAM使用的影响。该工具最初是面向嵌入式开发的,在其他环境中也可能有用。
我还没有尝试过在内核模块文件中使用elf_diff,但由于这些文件也是ELF文件,我希望它能正常工作。

bjp0bcyl

bjp0bcyl4#

您可以使用diffoscope比较两个.so文件,使用html选项在任何浏览器中查看差异,安装diffoscope后尝试以下操作:
diffoscope --html output.html first_file second_file
将在当前目录中创建outfile.html文件,您可以逐节看到其中的差异。

qmelpv7a

qmelpv7a5#

elfcmp比较两个ELF文件的内部结构,如文件头、节、段等。然后您可以在屏幕上打印或在应用程序中使用。它需要安装python。

相关问题