温馨提示×

centos怎么学反汇编

小樊
39
2026-09-12 02:09:18
栏目: 智能运维

在 CentOS 上学习反汇编(Reverse Assembly / Disassembly),可以从“环境准备 → 工具使用 → 学习路线 → 实战练习”四步来走。下面给你一个比较系统、可落地的学习方案。


一、CentOS 环境准备

1. 安装基础开发工具

sudo yum groupinstall "Development Tools"
sudo yum install gcc gcc-c++ gdb make

2. 安装反汇编 / 逆向工具

sudo yum install binutils objdump readelf nasm

常用工具说明:

  • objdump:最常用的反汇编工具(CentOS 自带)
  • readelf:分析 ELF 文件结构
  • gdb:动态调试 + 反汇编
  • nasm:写汇编程序练手

二、从最简单的反汇编开始

1. 写一个 C 程序

// test.c
#include <stdio.h>

int add(int a, int b) {
    return a + b;
}

int main() {
    int x = add(3, 4);
    printf("%d\n", x);
    return 0;
}

编译(保留调试信息):

gcc -g -o test test.c

2. 使用 objdump 反汇编

objdump -d test

只看 main 和 add:

objdump -d test | grep -A20 "<main>:"

你会看到类似:

push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp

3. 使用 GDB 反汇编(推荐)

gdb ./test

在 GDB 中:

disassemble main

单步执行并看汇编:

break main
run
stepi
disassemble

三、学习汇编基础(必须)

CentOS 是 x86_64(AT&T 语法)

重点学习:

  • 寄存器:rax rbx rcx rdx rbp rsp rip
  • 栈结构(函数调用)
  • 调用约定(System V AMD64)
  • 常见指令:
    • mov
    • push / pop
    • call / ret
    • lea
    • cmp / jmp

推荐语法对照:

AT&T:  mov %rax, %rbx
Intel: mov rbx, rax

(可用 objdump -M intel 切换 Intel 语法)


四、进阶逆向工具(慢慢上)

1. radare2(强烈推荐)

sudo yum install radare2

基本用法:

r2 -d ./test
aaa
pdf

2. Ghidra(GUI,强大)

  • 官网下载
  • Java 运行
  • 适合分析复杂程序

3. IDA(商业,牛但贵)


五、推荐学习路线

阶段 1:能看懂反汇编

  • C → 汇编对照
  • 函数调用过程
  • 栈帧变化

阶段 2:能调试程序

  • GDB 单步
  • 看寄存器和内存

阶段 3:能分析未知程序

  • 字符串
  • 控制流
  • 加密 / 逻辑还原

六、练习项目建议

  1. 反汇编自己写的程序
  2. 去掉符号表再分析
    strip test
    
  3. 分析 /bin/ls
  4. CTF 逆向题(pwn / reverse)

如果你愿意,我可以:

  • 给你 C ↔ 汇编对照示例
  • 手把手带你 用 GDB 反汇编一个函数
  • 或按你目标(CTF / 安全 / 底层开发)定制学习路径

你想从哪一步开始?

0 踩