我有两个文件,应该是从相同的源代码版本生成的。其中一个文件被剥离。是否可以比较文件的原始可执行部分,以确定他们是否相同?也可以在目标文件上完成(特别是在.ko linux内核模块上)?
lbsnaicq1#
我会试着用
objdump -d file1>a objdump -d file2>b diff a b
或者,如F.Hauri所言,
diff <(objdump -d file1) <(objdump -d file2)
-d选项反汇编文件的可执行部分。然而,不同的编译器总是有可能生成不同的字节,因此,汇编,代码。此外,我不确定目标文件在可执行文件中的顺序,如果有多个. for目标文件是用应该工作的同一个编译器编译的。
yhqotfr82#
您可以运行objdump -x <file>列出程序的各个部分,然后运行objcopy -j <section> <file> <out>提取这些部分并进行比较。您可能希望跳过调试部分,并检查.text、.data等。
objdump -x <file>
objcopy -j <section> <file> <out>
.text
.data
wz3gfoph3#
elf_diff比较ELF文件(对象文件、共享库、存档...),并生成差异的HTML或PDF报告。它的重点在于探索汇编级变化和资源消耗。相似性检测引擎执行符号名称和汇编代码之间的模糊匹配,并从比较的二进制文件中呈现可能相关的符号对,例如,由于已被重命名。elf_diff有助于理解高级语言代码(如C或C++)的更改对程序存储和静态RAM使用的影响。该工具最初是面向嵌入式开发的,在其他环境中也可能有用。我还没有尝试过在内核模块文件中使用elf_diff,但由于这些文件也是ELF文件,我希望它能正常工作。
bjp0bcyl4#
您可以使用diffoscope比较两个.so文件,使用html选项在任何浏览器中查看差异,安装diffoscope后尝试以下操作:diffoscope --html output.html first_file second_file将在当前目录中创建outfile.html文件,您可以逐节看到其中的差异。
diffoscope --html output.html first_file second_file
qmelpv7a5#
elfcmp比较两个ELF文件的内部结构,如文件头、节、段等。然后您可以在屏幕上打印或在应用程序中使用。它需要安装python。
5条答案
按热度按时间lbsnaicq1#
我会试着用
或者,如F.Hauri所言,
-d选项反汇编文件的可执行部分。
然而,不同的编译器总是有可能生成不同的字节,因此,汇编,代码。此外,我不确定目标文件在可执行文件中的顺序,如果有多个. for目标文件是用应该工作的同一个编译器编译的。
yhqotfr82#
您可以运行
objdump -x <file>
列出程序的各个部分,然后运行objcopy -j <section> <file> <out>
提取这些部分并进行比较。您可能希望跳过调试部分,并检查
.text
、.data
等。wz3gfoph3#
elf_diff比较ELF文件(对象文件、共享库、存档...),并生成差异的HTML或PDF报告。它的重点在于探索汇编级变化和资源消耗。相似性检测引擎执行符号名称和汇编代码之间的模糊匹配,并从比较的二进制文件中呈现可能相关的符号对,例如,由于已被重命名。elf_diff有助于理解高级语言代码(如C或C++)的更改对程序存储和静态RAM使用的影响。该工具最初是面向嵌入式开发的,在其他环境中也可能有用。
我还没有尝试过在内核模块文件中使用elf_diff,但由于这些文件也是ELF文件,我希望它能正常工作。
bjp0bcyl4#
您可以使用diffoscope比较两个.so文件,使用html选项在任何浏览器中查看差异,安装diffoscope后尝试以下操作:
diffoscope --html output.html first_file second_file
将在当前目录中创建outfile.html文件,您可以逐节看到其中的差异。
qmelpv7a5#
elfcmp比较两个ELF文件的内部结构,如文件头、节、段等。然后您可以在屏幕上打印或在应用程序中使用。它需要安装python。