llvm-objdump 相当于 aarch64-none-linux-gnu-objdump

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

假设我将四个字节放入一个文件中,然后使用 GNU 工具链对其进行反汇编:

-bash$ echo -en '\x1f\x20\x03\xd5' > ./myFile
-bash$ aarch64-none-linux-gnu-objdump -m AARCH64 -b binary -D ./myFile

./myFile:     file format binary

Disassembly of section .data:

0000000000000000 <.data>:
   0:   d503201f    nop

注意

myFile
不是一个正确的ELF文件或目标文件,但我仍然可以反汇编它!

我怎样才能用

llvm-objdump
做类似的事情?

-bash$ llvm-objdump --arch=arm64 -D x
.../llvm-16.0.4/bin/llvm-objdump: error: 'x': The file was not recognized as a valid object file

是否有一种机制可以使用 ARM 的

armclang
armasm
fromelf
执行我想要的操作?

llvm arm64 disassembly objdump
1个回答
0
投票

想通了。 关键是使用

objcopy
将原始二进制数据转换为ELF。 然后LLVM的
objdump
就可以反汇编了...

-bash$ echo -en '\x1f\x20\x03\xd5' > ./myFile
-bash$ /path/to/llvm-16.0.4/bin/llvm-objcopy \
         -I binary \
         -O elf64-littleaarch64 \
         --rename-section=.data=.text,code \
         ./myFile \
         ./myFile.elf
-bash$ /path/to/llvm-16.0.4/bin/llvm-objdump \
         --arch=arm64 \
         --disassemble \
         ./myFile.elf

myFile.elf: file format elf64-littleaarch64

Disassembly of section .text:

0000000000000000 <_binary___myFile_start>:
       0: d503201f      nop
© www.soinside.com 2019 - 2024. All rights reserved.