温馨提示×

CentOS反汇编入门怎么做

小樊
33
2026-08-30 13:11:13
栏目: 智能运维

CentOS 上入门 反汇编(Disassembly),核心目标是:

学会 把可执行文件/二进制还原成汇编代码,并理解它在做什么

下面给你一个 从零到可用的完整路线,适合初学者,偏实战。


一、先搞清楚:反汇编 ≠ 逆向工程(但这是第一步)

  • 反汇编:把机器码 → 汇编(x86 / x64)
  • 逆向工程:反汇编 + 逻辑分析 + 破解/审计

CentOS 常用于:

  • 分析 ELF 程序
  • 调试 C/C++ 程序
  • 安全审计
  • 程序性能/崩溃分析

二、准备环境(CentOS 7 / 8 / Stream)

1️⃣ 基本工具安装

sudo yum install -y \
  binutils \
  gdb \
  nasm \
  gcc \
  make

推荐再加:

sudo yum install -y strace ltrace

三、写一个最简单的程序(非常重要)

1️⃣ 写 C 程序

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

int main() {
    puts("Hello");
    return 0;
}

编译(带调试信息):

gcc -g -O0 hello.c -o hello

❗ 不要加 -O2,否则反汇编很难看


四、使用 objdump 反汇编(最基础)

1️⃣ 查看汇编代码

objdump -d hello

重点看:

main:
 push   rbp
 mov    rbp,rsp
 ...
 call   puts

2️⃣ 只看 main 函数

objdump -d hello | grep -A 20 "<main>:"

3️⃣ 查看所有符号

objdump -t hello

五、用 GDB 动态反汇编(强烈推荐)

1️⃣ 启动 GDB

gdb ./hello

2️⃣ 常用反汇编命令

disassemble main

或者:

disas main

3️⃣ 设置断点 + 看汇编

break main
run
disas

4️⃣ 单步执行(汇编级)

si      # 汇编单步
ni      # 指令单步(不进函数)
info registers

六、理解 x86-64 汇编(必须过的小门槛)

CentOS 常见架构:x86_64

你需要会看:

指令 含义
mov 赋值
push/pop 栈操作
call 函数调用
ret 返回
cmp 比较
jmp 跳转

常见寄存器

RAX RBX RCX RDX
RSP RBP
RIP

七、进阶工具(可选但强烈推荐)

1️⃣ radare2(专业逆向)

sudo yum install -y radare2

使用:

r2 ./hello

常用命令:

aaa
pd 20

2️⃣ Ghidra(图形化,最友好)

  • 官网:https://ghidra-sre.org/
  • 适合长期学习

3️⃣ IDA(最强,但贵)

  • 有免费版(ID Free)

八、常见 ELF 分析命令(面试/实战)

file hello
readelf -h hello
readelf -S hello
strings hello
nm hello

九、推荐学习路线(按 4 周)

第 1 周

  • 会写 C
  • 会用 objdump -d
  • 理解 main → call → ret

第 2 周

  • 熟练 GDB 反汇编
  • 理解栈帧
  • 会看函数参数

第 3 周

  • 分析无源码程序
  • 看懂 if / for / while 对应汇编

第 4 周

  • 用 radare2 / Ghidra
  • 简单反编译

十、常见坑(新手必看)

直接用 -O2 编译 → 很难看懂
跳过 GDB,直接学 IDA → 基础不牢
不懂汇编就看反编译 → 永远学不会


十一、如果你愿意,我可以继续帮你

你可以直接说:

  • ✅ “给我一个反汇编练习程序”
  • ✅ “帮我一步步分析一段汇编”
  • ✅ “我想学 CTF pwn / 逆向方向
  • ✅ “CentOS 下怎么分析 .so 文件”

我可以直接带你 手把手分析真实二进制

0