温馨提示×

反汇编linux指令如何入门

小樊
37
2026-10-20 23:44:05
栏目: 智能运维

入门 Linux 下反汇编(disassembly) 通常包括:了解基本概念、准备工具、学习指令、动手实践。下面给你一条比较系统的入门路线。


一、先搞清楚几个基本概念

1. 什么是反汇编

  • 汇编(Assembly):人类可读的底层语言
  • 机器码(Machine Code):CPU 能直接执行的二进制
  • 反汇编:把机器码还原成汇编代码(不是源码)

注意:反汇编 ≠ 反编译
反编译是尝试还原成 C/Python 等高级语言


二、必备基础知识(很重要)

1. 计算机基础

  • CPU 如何执行指令
  • 内存、栈(stack)、堆(heap)
  • 寄存器(通用寄存器、标志寄存器)

2. 汇编语言基础(x86 / x86-64)

推荐先学 x86-64(AMD64),Linux 默认用这个

必须认识的:

  • 寄存器:rax, rbx, rcx, rdx, rsi, rdi, rsp, rbp, rip
  • 常见指令:
    • mov
    • push / pop
    • call / ret
    • add / sub
    • cmp / jmp / je / jne
  • 调用约定(System V AMD64 ABI)

三、Linux 下常用反汇编工具

1️⃣ objdump(最基础)

objdump -d test

反汇编可执行文件

objdump -d -M intel test

使用 Intel 语法(更直观)


2️⃣ gdb(动态调试 + 反汇编)

gdb ./test

常用命令:

disassemble main
break main
run
stepi
info registers

3️⃣ radare2 / rizin(进阶推荐)

r2 -d ./test

功能:

  • 静态分析
  • 动态调试
  • 函数识别
  • 控制流图

4️⃣ IDA / Ghidra(GUI,强大)

  • IDA(商业,学生版可用)
  • Ghidra(NSA 开源,免费)

四、推荐学习路线(实操)

阶段 1:写 C → 看汇编

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

编译:

gcc -O0 -g test.c -o test

反汇编:

objdump -d -M intel test

观察:

  • 函数怎么调用
  • 参数怎么传
  • 返回值在哪

阶段 2:用 gdb 单步执行

gdb ./test
disassemble main
stepi

看:

  • 寄存器变化
  • 栈变化

阶段 3:分析简单程序

  • 计算器
  • 密码校验
  • 简单的 CTF 逆向题

五、推荐学习资源

书籍

  • 《汇编语言》(王爽,入门)
  • 《Reverse Engineering for Beginners》
  • 《Practical Reverse Engineering》

网站

  • https://godbolt.org (C → 汇编在线看)
  • CTF 平台(攻防世界、PWNable.kr)

六、常见误区

❌ 一上来就分析复杂软件
❌ 只背指令不理解执行流程
❌ 忽略调用约定和栈结构

✅ 从小程序开始
✅ 多画栈图
✅ 配合调试器看执行过程


如果你愿意,我可以:

  • 给你一个 从零开始的反汇编练习示例
  • 或按你的目标(CTF / 安全 / 内核 / 逆向)定制路线

你主要是想往哪个方向学?

0 踩