使用LLVM工具反汇编原始AArch64二进制文件

时间:2019-07-31 19:27:19

标签: llvm disassembly objdump

我可以使用以下命令反汇编原始二进制文件:

> aarch64-linux-gnu-objdump -m aarch64 -b binary -D file.bin

我可以用llvm-objdump达到相同的效果吗?如何实现?也许是LLVM工具链中的其他任何工具?

1 个答案:

答案 0 :(得分:1)

我发现仅使用LLVM工具执行此操作的最简单方法是首先将二进制文件objcopy放入ELF,然后objdump ELF。

转换文件

llvm-objcopy -I binary -B aarch64 --rename-section=.data=.text,code file.bin file.elf

让我们逐个查看这个选项:

  • -I binary:指定输入为原始二进制格式,而不是ELF格式。
  • -B aarch64(LLVM 9 1 ):指定将二进制解释为AArch64机器代码。
  • --rename-section=.data=.text,code:指定从二进制文件复制时自动创建的名为.data的部分应改为.text并标记为可执行代码。这样可以使用-d进行反汇编,以便以后使用。

反汇编文件

llvm-objdump -d file.elf

这很不言自明(与您使用GNU objdump编写的内容相同)。 -d表示要分解所有代码段,唯一的代码段是我们在上一步中使用--rename-section标记的代码段。


1 此命令适用于LLVM 9及更低版本。 LLVM 10删除了特定于二进制文件的-B选项,以使用-O选项指定输出目标,因此您改为编写-O elf64-littleaarch64