如何获得反汇编命令行?

S7_*_*7_0 2 command-line assembler

我目前正在学习 ASM 编程,我想反汇编一个文件.c. 但是在执行命令行后

set disassembly-flavor test.c
Run Code Online (Sandbox Code Playgroud)

我使用命令:

disassembly test.c
Run Code Online (Sandbox Code Playgroud)

我的终端显示

disassemble: command not found
Run Code Online (Sandbox Code Playgroud)

有谁知道我可以在我的电脑上得到“反汇编”命令吗?

谢谢

s3l*_*lph 6

首先,带有.c扩展名的文件很可能是 C 源文件。拆了也没用。要验证文件实际上是程序,请使用以下file命令:

$ file test.c
test.c: ASCII text
$ file /bin/bash
/bin/bash: ELF 64-bit LSB  executable, x86-64, version 1 (SYSV), dynamically linked
(uses shared libs), for GNU/Linux 2.6.24,
BuildID[sha1]=54967822da027467f21e65a1eac7576dec7dd821, stripped
Run Code Online (Sandbox Code Playgroud)

至于拆卸,请objdump改用。从联机帮助页:

NAME
       objdump - display information from object files.

SYNOPSIS
       objdump [...]
               [-d|--disassemble]
Run Code Online (Sandbox Code Playgroud)

所以要反汇编,比方说,一个名为 的文件a.out,使用

$ objdump -d a.out 

a.out:     file format elf64-x86-64


Disassembly of section .init:

00000000004003a8 <_init>:
  4003a8:   48 83 ec 08             sub    $0x8,%rsp
  4003ac:   48 8b 05 45 0c 20 00    mov    0x200c45(%rip),%rax        # 600ff8 <_DYNAMIC+0x1d0>
  4003b3:   48 85 c0                test   %rax,%rax
  4003b6:   74 05                   je     4003bd <_init+0x15>
  4003b8:   e8 33 00 00 00          callq  4003f0 <__gmon_start__@plt>
  4003bd:   48 83 c4 08             add    $0x8,%rsp
  4003c1:   c3                      retq   
[...] and so on...
Run Code Online (Sandbox Code Playgroud)