温馨提示×

linux反汇编指令参数怎用

小樊
39
2026-09-30 14:05:38
栏目: 智能运维

在 Linux 下做反汇编(disassembly),最常用的工具有 objdump、gdb、ndisasm、radare2 / r2、objconv 等。下面按最常见场景给你讲清楚指令和参数怎么用。


一、objdump(最常用)

1️⃣ 反汇编整个可执行文件

objdump -d a.out
  • -d:反汇编所有包含代码的段

2️⃣ 反汇编指定函数

objdump -d a.out | grep -A 30 main

或者更精确:

objdump -d --start-address=0x401000 --stop-address=0x401100 a.out

3️⃣ 显示源码 + 汇编(需带 -g 编译)

gcc -g test.c -o test
objdump -S test
  • -S:源码与汇编混合

4️⃣ 指定架构

objdump -d -m i386 a.out
objdump -d -m arm a.out

常用:

  • i386
  • x86-64
  • arm
  • aarch64

5️⃣ Intel 语法(默认是 AT&T)

objdump -d -M intel a.out

6️⃣ 反汇编裸二进制文件

objdump -b binary -m i386 -M intel -D file.bin
  • -b binary:二进制文件
  • -D:强制反汇编

二、gdb(调试时反汇编)

1️⃣ 进入 gdb

gdb a.out

2️⃣ 反汇编当前函数

disassemble

3️⃣ 反汇编指定函数

disassemble main

4️⃣ 反汇编指定地址范围

disassemble 0x401000, 0x401100

5️⃣ Intel 语法

set disassembly-flavor intel
disassemble

6️⃣ 显示源码 + 汇编

layout split

三、ndisasm(裸汇编)

适合 bootloader / shellcode

ndisasm -b 32 file.bin
ndisasm -b 64 file.bin
  • -b 16 / 32 / 64

四、radare2(强大逆向工具)

r2 a.out

进入后:

aa        ; 分析
pdf       ; 反汇编当前函数
s main    ; 跳到 main
pdf

五、常见组合示例

✅ C 程序反汇编

gcc test.c -o test
objdump -d -M intel test

✅ 带调试信息

objdump -S -M intel test

✅ 查看系统调用

objdump -d a.out | grep syscall

六、AT&T vs Intel 语法对照

AT&T Intel
mov %eax, %ebx mov ebx, eax
add $1, %eax add eax, 1

如果你愿意,可以告诉我:

  • ✅ 你是 x86 / x64 / ARM
  • ✅ 是 程序分析 / 逆向 / CTF / 内核
  • ✅ 是否用 gdb / objdump / radare2

我可以给你更针对的命令和实战例子。

0 踩