学习 Linux 下的反汇编指令(assembly / disassembly),建议按“工具 → 指令集 → 反汇编阅读 → 实战”的路径来。下面给你一套比较系统的学习路线。
在 Linux 下说“反汇编”,通常涉及:
sudo apt update
sudo apt install gcc gdb binutils objdump nasm radare2
// hello.c
#include <stdio.h>
int main() {
int a = 1;
int b = 2;
return a + b;
}
编译:
gcc -o hello hello.c
objdump -d hello
常用参数:
objdump -d -M intel hello # Intel 语法(推荐新手)
objdump -S hello # 源码+汇编对照
你会看到类似:
mov eax, 1
mov ebx, 2
add eax, ebx
gdb ./hello
GDB 常用反汇编命令:
disassemble main
layout asm
layout split # 源码+汇编
stepi # 单步执行汇编
info registers
movadd, sub, mul, divpush, pop, call, retjmp, je, jne, cmprdi, rsi, rdx, rcx, r8, r9raxpush rbp
mov rbp, rsp
sub rsp, 16
你要能看懂:
✅ 先学 C + 汇编对照
✅ 先看 编译器生成的汇编,不要手写
✅ 多 gdb 单步
❌ 不要一上来就学 shellcode / 逆向破解
如果你愿意,我可以:
你现在是出于什么目的学?(兴趣 / 安全 / 面试 / 开发)