温馨提示×

CentOS反汇编指令如何看

小樊
38
2026-07-09 02:13:33
栏目: 智能运维

CentOS(或其他 Linux) 上,“反汇编指令怎么看”通常是指 把可执行文件或进程中的机器码反汇编成汇编代码。下面按最常见的使用场景给你一个完整说明。


一、常用反汇编工具

在 CentOS 上,最常用的是:

工具 说明
objdump GNU binutils 自带,最常用
gdb 调试时可反汇编
radare2 专业逆向工具
ndisasm NASM 自带,适合裸二进制
llvm-objdump LLVM 工具链

一般系统自带 objdump + gdb,优先用它们。


二、用 objdump 反汇编(最常见)

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

objdump -d test

示例:

objdump -d ./a.out

输出类似:

0000000000401136 <main>:
  401136:       55                      push   %rbp
  401137:       48 89 e5                mov    %rsp,%rbp
  40113a:       b8 2a 00 00 00          mov    $0x2a,%eax
  40113f:       5d                      pop    %rbp
  401140:       c3                      ret

2️⃣ 只看某个函数

objdump -d a.out | grep -A 20 "<main>"

3️⃣ 显示源码 + 汇编(如果有调试信息)

objdump -S a.out

⚠️ 编译时要加 -g

gcc -g -o a.out main.c

4️⃣ 指定架构(交叉或 32 位程序)

objdump -M intel -b elf32-i386 -d a.out

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

objdump -M intel -d a.out

对比:

AT&T Intel
mov %eax,%ebx mov ebx, eax

三、用 gdb 反汇编(调试时非常常用)

1️⃣ 启动 gdb

gdb ./a.out

2️⃣ 反汇编当前函数

disassemble

或:

disas main

3️⃣ Intel 语法

set disassembly-flavor intel
disas main

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

disas 0x401136,0x401150

5️⃣ 查看某条指令

x/5i $pc

四、反汇编共享库 / 二进制文件

查看 so 文件

objdump -d /lib64/libc.so.6 | less

查看函数符号

nm a.out
objdump -t a.out

五、裸二进制文件反汇编(如 shellcode)

如果是 没有 ELF 头的文件

ndisasm -b 64 shellcode.bin

或:

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

六、常见字段怎么看(重点)

以 objdump 输出为例:

401136:       55                      push   %rbp
部分 含义
401136 指令地址
55 机器码
push %rbp 汇编指令

七、CentOS 安装工具(如果没有)

sudo yum install binutils gdb nasm

八、典型学习路径(建议)

  1. 写 C 程序
  2. gcc -g -o test test.c
  3. objdump -M intel -S test
  4. gdb ./test
  5. disas main

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

  • ✅ 你是 看漏洞 / 逆向 / 编译原理 / 内核
  • ✅ 是 32 位还是 64 位
  • ✅ 是 ELF 文件还是裸二进制

我可以直接按你的场景给你 具体命令 + 逐行解释

0