温馨提示×

怎么学centos反汇编指令

小樊
49
2026-09-27 08:26:06
栏目: 智能运维

学习 CentOS 下的反汇编指令,本质上是学习 Linux 平台上的汇编与反汇编工具链,以及 x86/x64 汇编基础。下面我按“从零到能上手”的路径给你一个系统学习路线。


一、先明确:你要学的是哪一层?

在 CentOS 上,“反汇编”通常包含三类目标:

  1. 反汇编已有二进制程序(ELF 文件)
  2. 查看程序运行时的汇编指令
  3. 自己写汇编 / 理解 C 编译后的汇编

不同目标,工具和学习重点不同。


二、基础环境准备(CentOS)

1. 安装必要工具

sudo yum install -y gcc gcc-c++ gdb binutils
sudo yum install -y objdump readelf nasm

常用工具说明:

  • objdump:反汇编 ELF
  • gdb:调试 + 查看汇编
  • readelf:分析 ELF 结构
  • nasm:写汇编用(可选)

三、第一步:从 C 到汇编(最重要)

示例

// test.c
int add(int a, int b) {
    return a + b;
}

编译(不优化,方便看):

gcc -O0 -c test.c -o test.o

反汇编:

objdump -d test.o

你会看到类似:

0000000000000000 <add>:
   0:   55                      push   %rbp
   1:   48 89 e5                mov    %rsp,%rbp
   4:   89 7d fc                mov    %edi,-0x4(%rbp)
   7:   89 75 f8                mov    %esi,-0x8(%rbp)
   a:   8b 45 fc                mov    -0x4(%rbp),%eax
   d:   03 45 f8                add    -0x8(%rbp),%eax
  10:   5d                      pop    %rbp
  11:   c3                      ret

✅ 这是最推荐的学习方式:

C → 汇编 → 反汇编对照学


四、核心反汇编命令(必须掌握)

1. objdump(最常用)

objdump -d ./a.out          # 反汇编
objdump -S ./a.out          # 汇编+源码对照
objdump -x ./a.out          # 查看 ELF 信息

2. gdb(运行时反汇编)

gdb ./a.out
(gdb) disassemble main
(gdb) layout asm
(gdb) info registers

进入函数后:

(gdb) disas

五、汇编基础(x86 / x64)

必须理解的几个概念

  • 寄存器:
    • rax / rbx / rcx / rdx
    • rsp / rbp
    • rdi / rsi(函数参数)
  • 调用约定(System V AMD64):
    • 参数:rdi, rsi, rdx, rcx…
    • 返回值:rax
  • 栈帧:
    • push rbp
    • mov rbp, rsp

推荐学习顺序

  1. 函数调用
  2. 栈结构
  3. 条件跳转(je / jne / jg)
  4. 循环(汇编层面)

六、进阶:真实程序反汇编

反汇编整个可执行文件

objdump -d /bin/ls | less

分析符号

readelf -s a.out

去除符号后反汇编

strip a.out
objdump -d a.out

七、推荐学习资源

书籍

  • 《Assembly Language for x86 Processors》(中文:x86 汇编语言)
  • 《Reverse Engineering for Beginners》(免费 PDF)

在线

  • https://godbolt.org (C → 汇编神器)
  • Intel / AMD 官方指令集手册

八、如果你告诉我目的,我可以更精准教

你可以直接说:

  • ✅ 想学逆向破解
  • ✅ 想学漏洞分析
  • ✅ 想学操作系统原理
  • ✅ 想学CTF pwn

我可以给你针对性练习 + 示例二进制 + 一步步实验。

要不要我直接带你做 “第一个 CentOS 反汇编实验”?

0 踩