温馨提示×

centos如何学反汇编指令

小樊
54
2026-09-06 07:32:40
栏目: 智能运维

在 CentOS 上学习反汇编指令,可以按下面几个阶段来走:


一、准备环境

1. 安装必要工具

sudo yum install -y gcc gcc-c++ gdb binutils

可选(更专业):

sudo yum install -y nasm objdump readelf strace ltrace

常用工具说明:

  • gcc:编译 C 程序
  • objdump:反汇编 ELF 文件(最常用)
  • gdb:调试 + 查看汇编
  • readelf:分析 ELF 结构
  • nasm:写汇编程序(可选)

二、从一个简单 C 程序开始

1. 写代码

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

int main() {
    return add(1, 2);
}

2. 编译(保留调试信息)

gcc -g -O0 test.c -o test

三、使用 objdump 反汇编

1. 反汇编整个文件

objdump -d test

2. 只看某个函数

objdump -d test | grep -A 20 '<add>:'

3. 反汇编 + 源码对照

objdump -S -d test

你会看到类似:

0000000000400526 <add>:
  400526: 55                    push   %rbp
  400527: 48 89 e5              mov    %rsp,%rbp
  40052a: 89 7d fc              mov    %edi,-0x4(%rbp)

四、使用 GDB 学习汇编

1. 启动 GDB

gdb ./test

2. 在 main 处下断点

break main
run

3. 查看汇编

disassemble

或单步执行汇编:

stepi
info registers

五、理解常见汇编指令(x86_64)

指令 含义
mov 数据传送
push/pop 栈操作
call/ret 函数调用
add/sub 加减
cmp/test 比较
je/jne 条件跳转
lea 取地址

六、推荐学习路径

  1. 先学 C → 汇编对应关系
  2. 用 objdump 看编译器怎么生成汇编
  3. 用 gdb 单步执行,观察寄存器变化
  4. 再学 AT&T 和 Intel 语法区别
    objdump -M intel -d test
    

七、推荐资料

  • 《汇编语言(王爽)》
  • 《逆向工程核心原理》
  • Intel / AMD 官方指令手册
  • 在线:https://godbolt.org(看 C → 汇编)

如果你愿意,我可以:

  • 帮你逐行解释一段反汇编代码
  • 教你CentOS 下分析病毒/二进制
  • 或专门讲 x86 / x64 汇编入门

你更想学哪一块?

0 踩