适用于 ARM64 架构的 Objdump

Objdump for ARM64 Architecture

提问人:el Kusn 提问时间:9/7/2023 更新时间:9/7/2023 访问量:115

问:

我在具有 ARM64 (aarch64) 架构的 Ubuntu 中遇到了这个错误,其中 Objdump 无法运行。 以下命令 «objdump -d filename» 的错误消息:

filename: file format elf64-little
objdump: can’t disassemble for architecture UNKNOWN!

我不确定 objdump 是否甚至可以在 Aarch64 架构上运行。有人有什么想法吗?或者是否有任何其他命令可以反汇编 ETF 文件?

程序集 arm64 objdump binutils ctf

评论

2赞 Jester 9/7/2023
是的,objdump 与 aarch64 配合使用。你得到什么?file filename
0赞 el Kusn 9/7/2023
@Jester感谢您的回复。file filename 输出: filename: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=....., for GNU/Linux 3.2.0, with debug_info, not stripped
1赞 Jester 9/7/2023
所以这是一个 x86-64 二进制文件,而不是 aarch64。为此,您将需要 x86-64 objdump(如果您拥有,可以交叉编译以在 aarch64 上运行)。
0赞 el Kusn 9/7/2023
@Jester啊,我明白了。我是新手!那我会尝试这样做的,谢谢!
2赞 Peter Cordes 9/7/2023
最简单的方法是使用;LLVM 可以(并且确实)将对多个目标的支持构建到一个工具构建中。 将简单地自动检测架构并拆卸。( 编译任何被配置为用作默认值的目标,通常是本机目标。但是,例如,至少对于不需要MIPS特定标头的东西是有效的。llvm-objdump -dllvm-objdumpclangclang -target mips

答:

0赞 Peter Cordes 9/7/2023 #1

GNU Binutils 只能处理构建时选择的一种架构。在 AArch64 Linux 系统上,系统命令将为 aarch64-linux-gnu 对象文件配置,但事实并非如此。如果你安装了跨工具链,你可以使用它。objdumpx86-64-linux-gnu-objdump

但是您可能已经安装了可以处理各种体系结构的反汇编程序:
llvm-objdump -d

LLVM 可以(并且确实)将对多个目标的支持构建到一个工具构建中。 将简单地自动检测架构并拆卸。( 编译任何被配置为用作默认值的目标,通常是本机目标。但是,例如,至少对于不需要特定于MIPS的标头或库来链接的东西是有效的。llvm-objdumpclangclang -c -target mips