温馨提示×

怎样学习linux反汇编命令

小樊
40
2026-10-26 22:37:13
栏目: 智能运维

学习 Linux 下的反汇编命令,核心目标是:

能看懂程序在 CPU 层面的执行过程,并熟练使用工具进行分析。

下面我按学习路径 + 常用命令 + 实战建议给你一个系统性的指南。


一、先打基础(很重要)

在学反汇编命令前,至少要懂:

1. 基本知识

  • Linux 基本命令(gcc、objdump、gdb)
  • C 语言基础
  • 程序编译过程:
    源码 → 预处理 → 汇编 → 目标文件 → 可执行文件
    

2. 汇编基础(不用精通,但要认识)

  • x86 / x86_64 常见指令:
    • mov, push, pop, call, ret
    • jmp, je, jne
    • lea, add, sub, cmp
  • 寄存器:
    • rax / eax(返回值)
    • rsp / rbp(栈)
    • rdi / rsi / rdx(参数)

二、Linux 常用反汇编工具

1️⃣ objdump(最基础、最常用)

反汇编整个程序

objdump -d test

反汇编并看源码对照

objdump -d -S test

只看某个函数

objdump -d test | grep -A 20 main

查看符号表

objdump -t test

✅ 适合:

  • 静态分析
  • 看函数结构
  • 学习汇编

2️⃣ gdb(动态反汇编,强烈推荐)

启动

gdb ./test

查看反汇编

disassemble main

带源码的反汇编

disassemble /m main

单步执行(汇编级)

stepi
nexti

查看寄存器

info registers

✅ 适合:

  • 调试
  • 理解执行流程
  • 逆向分析

3️⃣ nm(看函数和符号)

nm test

常见符号:

  • T 文本段(函数)
  • U 未定义(外部函数)

4️⃣ readelf(看 ELF 结构)

readelf -h test
readelf -S test

✅ 适合理解:

  • ELF 文件格式
  • 段(text / data / bss)

三、推荐学习路径(按顺序)

✅ 阶段 1:从 C 到汇编

  1. 写简单 C 程序
  2. 用 gcc -S 生成汇编
  3. 对比 C 和汇编
gcc -S test.c

✅ 阶段 2:静态反汇编

objdump -d -S a.out

重点看:

  • main 函数
  • 函数调用
  • 栈操作

✅ 阶段 3:动态调试

gdb ./a.out
break main
run
disassemble

✅ 阶段 4:小逆向练习

  • 去掉符号编译:
    gcc -s test.c
    
  • 用 objdump + gdb 找 main 逻辑
  • 修改返回值(练习用)

四、常见学习误区

❌ 一上来就啃汇编手册
❌ 只看不练
❌ 忽视 gdb

✅ 正确方式:

  • C → 汇编 → 反汇编 → 调试

五、推荐资料

书籍

  • 《程序员的自我修养》
  • 《逆向工程核心原理》
  • 《x86 汇编语言:从实模式到保护模式》

在线

  • Intel / AMD 指令手册(查指令用)
  • CTF 逆向题(pwn / reverse)

六、如果你想更进一步

可以告诉我:

  • 你是 安全 / 逆向 / 嵌入式 / 兴趣
  • 用的是 x86 / ARM
  • 是否想学 CTF / 病毒分析 / 内核

我可以直接给你定制化学习路线和命令清单。

0 踩