温馨提示×

linux反汇编格式是什么

小樊
43
2026-10-06 09:26:37
栏目: 智能运维

在 Linux 下进行反汇编(disassembly),常见的“格式”通常可以从两个层面理解:


一、反汇编工具常见的输出格式

1. objdump(最常用)

objdump -d test

典型输出格式:

0000000000401136 <main>:
  401136:	55                   	push   %rbp
  401137:	48 89 e5             	mov    %rsp,%rbp
  40113a:	5d                   	pop    %rbp
  40113b:	c3                   	ret

说明:

  • 地址:401136
  • 机器码:55
  • 汇编指令:push %rbp
  • 默认语法:AT&T 语法

2. AT&T 语法 vs Intel 语法(重点)

AT&T 语法(Linux 默认)

movl %eax, %ebx

特点:

  • 源操作数在前
  • 寄存器加 %
  • 立即数加 $
  • 指令带大小后缀(b/w/l/q)

Intel 语法(Windows / IDA 常用)

mov ebx, eax

特点:

  • 目的操作数在前
  • 无 % 和 $

在 Linux 中使用 Intel 语法:

objdump -M intel -d test

3. gdb 反汇编格式

disassemble main

或:

disas /r main

输出示例:

Dump of assembler code for function main:
   0x0000000000401136 <+0>:	push   %rbp
   0x0000000000401137 <+1>:	mov    %rsp,%rbp
End of assembler dump.

4. radare2 / ghidra / IDA

  • radare2:pd 10
  • 支持 AT&T / Intel 切换
  • Ghidra / IDA 默认 Intel

二、可执行文件 / 反汇编对象格式

Linux 下常见的是:

1. ELF 格式(Executable and Linkable Format)

file test
# test: ELF 64-bit LSB executable, x86-64

反汇编主要针对:

  • .text 段(代码段)
  • 函数符号(如有)

2. 反汇编的常见目标

  • 可执行文件(ELF)
  • .o 目标文件
  • 内存映像(core dump)
  • 裸二进制(raw binary)

裸二进制反汇编:

objdump -b binary -m i386:x86-64 -D file.bin

三、总结一句话

Linux 反汇编默认是 ELF + AT&T 语法,常用 objdump -d,可加 -M intel 切换为 Intel 格式。

如果你是想问:

  • 某个具体架构(x86 / ARM)
  • 某个工具(gdb / radare2 / IDA)
  • 某种文件(strip 后 / 内核 / 驱动)

可以告诉我,我给你更针对性的说明。

0 踩