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

问题描述 投票:0回答:1

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

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

我可以用

llvm-objdump
达到同样的效果吗?怎么做?也许 LLVM 工具链中的任何其他工具?

llvm disassembly objdump
1个回答
3
投票

我发现只使用 LLVM 工具来做到这一点的最简单方法是首先

objcopy
将二进制文件放入 ELF,然后
objdump
ELF。

转换文件

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

这个是不言自明的(和你用 GNU 写的一样

objdump
)。
-d
表示反汇编所有代码段,唯一的代码段是我们在上一步中使用
--rename-section
标记的代码段。


1此命令适用于 LLVM 10 及更高版本。 LLVM 10 删除了二进制特定的

-B
选项,转而使用
-O
选项指定输出目标。对于 LLVM 9 及以下版本,您将使用
-B aarch64
.

© www.soinside.com 2019 - 2024. All rights reserved.