【发布时间】:2019-10-20 17:56:37
【问题描述】:
我正在用 FASM 汇编程序编写程序,想看看在所有宏扩展之后生成了什么代码。通常可以使用objdump -d 解开二进制文件,但对于由 fasm 生成的二进制文件,它只输出以下内容:
$ cat true.fasm
format ELF64 executable
sys_exit = 60
entry $
mov eax, sys_exit
xor edi, edi
syscall
$ fasm true.fasm
$ objdum -d ./true
out/true: file format elf64-x86-64
我能做的是将二进制文件加载到gdb,以starti 开始,并以x/10i $rip 解码指令,这是次优的。是否有非交互式命令可以做到这一点?
【问题讨论】:
-
FASM 不创建 ELF 部分信息(因此没有
.text部分),只有告诉操作系统如何将其映射到内存的程序头。我不知道一个很好的方便的方法来反汇编它,除了把它当作一个平面二进制文件并反汇编所有东西(例如ndisasm -b32)。然后自己找到实际指令的开始。 -
您可以尝试使用objdump的
-D(大写D,全部反汇编)选项,看看效果是否更好。 -
-D产生相同的输出:`文件格式elf64-x86-64`
标签: assembly disassembly fasm