在 CentOS 上学习反汇编(Reverse Assembly / Disassembly),可以从“环境准备 → 工具使用 → 学习路线 → 实战练习”四步来走。下面给你一个比较系统、可落地的学习方案。
sudo yum groupinstall "Development Tools"
sudo yum install gcc gcc-c++ gdb make
sudo yum install binutils objdump readelf nasm
常用工具说明:
objdump:最常用的反汇编工具(CentOS 自带)readelf:分析 ELF 文件结构gdb:动态调试 + 反汇编nasm:写汇编程序练手// test.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 -g -o test test.c
objdump -d test
只看 main 和 add:
objdump -d test | grep -A20 "<main>:"
你会看到类似:
push %rbp
mov %rsp,%rbp
sub $0x10,%rsp
gdb ./test
在 GDB 中:
disassemble main
单步执行并看汇编:
break main
run
stepi
disassemble
CentOS 是 x86_64(AT&T 语法)
rax rbx rcx rdx rbp rsp ripmovpush / popcall / retleacmp / jmp推荐语法对照:
AT&T: mov %rax, %rbx
Intel: mov rbx, rax
(可用 objdump -M intel 切换 Intel 语法)
sudo yum install radare2
基本用法:
r2 -d ./test
aaa
pdf
strip test
/bin/ls如果你愿意,我可以:
你想从哪一步开始?