温馨提示×

centos反汇编如何入门

小樊
42
2026-09-12 02:00:19
栏目: 智能运维

在 CentOS 上进行反汇编(Disassembly)入门,一般流程是:准备环境 → 编写/获取程序 → 使用反汇编工具 → 结合调试器分析。下面给你一个从零开始的实用路线。


一、准备 CentOS 环境

1. 安装基础开发工具

sudo yum groupinstall "Development Tools"
sudo yum install gdb binutils

常用工具说明:

  • gcc / g++:编译 C/C++
  • objdump:反汇编 ELF 文件(最基础)
  • gdb:调试 & 动态分析
  • readelf:查看 ELF 结构

二、写一个最简单的程序

示例:hello.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 -O0 -g -o hello hello.c

三、最基础的反汇编:objdump

1. 反汇编整个程序

objdump -d hello

重点看:

  • <main>
  • <add>

示例输出(简化):

0000000000400526 <add>:
  400526: 55          push   %rbp
  400527: 48 89 e5    mov    %rsp,%rbp
  40052a: 89 7d fc    mov    %edi,-0x4(%rbp)
  40052d: 89 75 f8    mov    %esi,-0x8(%rbp)
  400530: 8b 45 fc    mov    -0x4(%rbp),%eax
  400533: 03 45 f8    add    -0x8(%rbp),%eax
  400536: 5d          pop    %rbp
  400537: c3          ret

2. 只反汇编 main

objdump -d -M intel hello | grep -A 30 "<main>:"

推荐加:

-M intel

使用 Intel 语法(比 AT&T 好读)


四、配合 GDB 动态反汇编

1. 启动 GDB

gdb ./hello

2. 查看反汇编

disassemble main

或:

set disassembly-flavor intel
disassemble main

3. 单步执行汇编

break main
run
stepi
info registers

非常有助于理解:

  • 栈帧
  • 参数传递(rdi, rsi…)
  • 返回值(rax)

五、进阶工具(可选)

1. radare2(强大但偏难)

sudo yum install radare2
r2 -d ./hello

2. GHIDRA / IDA(图形化)

  • 不在 CentOS 本地跑也行
  • 可把二进制拖到 Windows / macOS 分析

六、推荐学习顺序

  1. 会用 objdump -d
  2. 理解 main / call / ret / push / pop
  3. 用 GDB 单步汇编
  4. 学 x86-64 调用约定
  5. 尝试反编译自己写的函数

七、学习资源建议

  • 《Assembly Language for x86 Processors》
  • 《逆向工程核心原理》
  • Intel 64 架构手册(官方)
  • CTF pwn / reverse 入门题

如果你愿意,我可以:

  • 给你 一步一步解释一段汇编
  • 或针对 CentOS 7 / 8 差异
  • 或带你做 第一个反汇编练习

你现在是 纯入门 / 有 C 基础 / 有汇编基础?

0 踩