温馨提示×

linux反汇编指令如何选型

小樊
36
2026-09-12 08:47:30
栏目: 智能运维

在 Linux 下进行反汇编(disassembly),指令/工具选型取决于你的目标文件类型、分析深度、是否调试、是否二进制漏洞分析等需求。下面按场景 → 工具 → 关键命令给你一个实用选型指南。


一、最常见的 Linux 反汇编工具矩阵

工具 类型 适合场景
objdump 静态反汇编 ELF 文件快速查看
gdb 动态反汇编 调试 + 运行时分析
objdump -d / objdump -S 混合源码 有符号程序
readelf ELF 结构 辅助分析
nm 符号表 函数定位
ltrace / strace 系统调用 行为分析
radare2 / r2 高级逆向 二进制分析
IDA Free / Ghidra GUI 逆向 专业逆向

二、按场景选型(重点)

✅ 场景 1:只想看 ELF 的反汇编代码

首选:objdump

objdump -d ./a.out

带源码(需要 -g 编译):

objdump -S ./a.out

查看某个函数:

objdump -d ./a.out | grep -A 30 "<main>:"

✅ 场景 2:运行时反汇编(调试)

首选:gdb

gdb ./a.out
(gdb) disassemble main

AT&T / Intel 语法切换:

(gdb) set disassembly-flavor intel
(gdb) disassemble main

反汇编当前执行位置:

(gdb) disassemble

✅ 场景 3:没有源码,只有二进制

首选:radare2Ghidra

radare2 快速入门:

r2 ./a.out
[0x000000]> aa
[0x000000]> pdf @ main

✅ 场景 4:看函数名 / 符号

nm ./a.out
readelf -s ./a.out

✅ 场景 5:系统调用 / 库调用分析

strace ./a.out
ltrace ./a.out

三、架构 & 指令集相关选型

x86 / x86_64

  • objdump -d
  • gdb
  • Intel 语法更直观

ARM / AArch64

objdump -d -M arm ./xxx

MIPS / RISC-V

objdump -d -M mips ./xxx

四、Intel vs AT&T 语法(很重要)

Linux 默认 AT&T

mov %esp, %ebp

Intel(推荐):

mov ebp, esp

切换方式:

  • gdb: set disassembly-flavor intel
  • objdump: objdump -d -M intel

五、快速选型决策树

有源码?
 ├─ 是 → objdump -S
 └─ 否
    ├─ 想调试 → gdb
    ├─ 静态看 → objdump -d -M intel
    └─ 深度逆向 → radare2 / Ghidra

六、推荐组合(实战)

日常 Linux 分析:

readelf -h
nm
objdump -d -M intel
gdb

CTF / 二进制安全:

radare2
Ghidra

如果你能告诉我:

  • 分析的是 什么程序(ELF / 固件 / 内核模块)
  • 是否 有符号 / 源码
  • 目的是 学习 / 调试 / 安全分析

我可以直接给你最合适的一条命令链

0