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



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

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

我可以通过llvm-objdump达到相同的效果吗?也许LLVM工具链中的任何其他工具?

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

转换文件

llvm-objcopy -I binary -O elf64-littleaarch64 --rename-section=.data=.text,code file.bin file.elf

让我们逐个选项地浏览一下:

  • -I binary:指定输入采用原始二进制形式,而不是 ELF 形式。
  • -O elf64-littleaarch64(LLVM 10+1):指定将二进制文件解释为 AArch64 机器代码。
  • --rename-section=.data=.text,code:指定从二进制文件复制时自动创建的名为.data的部分应改为命名为.text并标记为可执行代码。这允许使用-d进行拆卸,以便以后工作。

反汇编文件

llvm-objdump -d file.elf

这是不言自明的(与您使用 GNUobjdump编写的内容相同)。-d说要反汇编所有代码部分,唯一的代码部分是我们在上一步中使用--rename-section标记的代码部分。


1此命令适用于 LLVM 10 及更高版本。LLVM 10 删除了特定于二进制的-B选项,转而使用-O选项指定输出目标。对于 LLVM 9 及更低版本,您将使用-B aarch64.

相关内容

  • 没有找到相关文章

最新更新