温馨提示×

什么是linux反汇编命令

小樊
40
2026-10-06 09:22:36
栏目: 智能运维

在 Linux 下,“反汇编命令”通常指将可执行文件、目标文件或内存中的机器码转换成汇编代码的命令行工具。下面按常见程度和用途给你一个清晰梳理。


一、最常用的反汇编命令

1️⃣ objdump(最常用)

作用:反汇编 ELF 可执行文件、.o 目标文件等
属于:GNU Binutils

objdump -d test

常用选项:

objdump -d test          # 反汇编所有可执行段
objdump -D test          # 反汇编所有段(包括数据段)
objdump -S test          # 汇编 + 源码混合(需 -g 编译)
objdump -M intel test    # Intel 语法(默认是 AT&T)

示例(Intel 语法):

objdump -d -M intel test

2️⃣ gdb(调试时反汇编)

作用:在调试过程中查看汇编代码

gdb ./test

进入后:

disassemble main
disassemble
disassemble 0x400520

设置为 Intel 语法:

set disassembly-flavor intel

单步汇编调试:

stepi
ni

3️⃣ ndisasm(专门反汇编 raw 二进制)

作用:反汇编裸机代码、shellcode

ndisasm -b 32 shellcode.bin
ndisasm -b 64 shellcode.bin

常见于:

  • CTF
  • 病毒分析
  • bootloader

二、高级 / 专业级反汇编工具(命令或交互)

4️⃣ radare2(r2)

强大的逆向分析框架(命令行)

r2 ./test

常用:

aa          # 分析
pdf         # 反汇编当前函数
s main
pdf

5️⃣ objdump vs gdb vs radare2 对比

工具 场景 特点
objdump 静态分析 简单、稳定
gdb 动态调试 可边运行边看
radare2 逆向工程 功能最全
ndisasm 原始二进制 无格式限制

三、示例:反汇编一个 C 程序

// test.c
int main() {
    return 0;
}

编译:

gcc -g test.c -o test

反汇编:

objdump -d -M intel test

四、常见语法说明(AT&T vs Intel)

  • AT&T(默认)
mov %esp, %ebp
  • Intel(推荐)
mov ebp, esp

五、总结一句话

Linux 下“反汇编命令”通常指 objdump、gdb、ndisasm、radare2,其中 objdump 最基础,gdb 最常用,radare2 最专业。

如果你愿意,我也可以:

  • 教你 看反汇编代码
  • 结合 C 和汇编对照
  • 做 CTF / 逆向实战示例

0 踩