Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用LLVM工具反汇编原始AArch64二进制文件_Llvm_Disassembly_Objdump - Fatal编程技术网

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

使用LLVM工具反汇编原始AArch64二进制文件,llvm,disassembly,objdump,Llvm,Disassembly,Objdump,我可以使用以下命令反汇编原始二进制文件: > aarch64-linux-gnu-objdump -m aarch64 -b binary -D file.bin 我可以用llvm objdump实现同样的效果吗?如何实现?可能是LLVM工具链中的任何其他工具?我发现仅使用LLVM工具完成此操作的最简单方法是首先objcopy将二进制文件复制到ELF中,然后objdumpELF 转换文件 让我们逐个检查此选项: -I binary:指定输入为原始二进制格式,而不是ELF格式 -B aa

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

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

我可以用
llvm objdump
实现同样的效果吗?如何实现?可能是LLVM工具链中的任何其他工具?

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

转换文件 让我们逐个检查此选项:

  • -I binary
    :指定输入为原始二进制格式,而不是ELF格式
  • -B aarch64
    (LLVM 91):指定二进制文件将被解释为aarch64机器代码
  • --重命名节=.data=.text,code
    :指定从二进制文件复制时自动创建的名为
    .data
    的节应改为名为
    .text
    ,并标记为可执行代码。这允许以后使用
    -d
    进行反汇编
反汇编文件 这一点很容易解释(与使用GNU
objdump
编写的代码相同)
-d
表示要反汇编所有代码段,唯一的代码段就是我们在上一步中使用
--rename section
标记的代码段


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

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