学习 Linux 下的反汇编(Disassembly) 通常是为了逆向工程、漏洞分析、二进制安全或理解程序底层执行过程。下面给你一个从零到入门、循序渐进的上手路线。
Linux 下最常见的是:
建议先学 x86-64,资料最多。
重点掌握:
RAX, RBX, RCX, RDX, RSP, RBP, RIPmov, push, popadd, sub, xorcall, ret, jmp, je, jne推荐速成:
x86-64 assembly tutorialsudo apt update
sudo apt install -y \
gcc gdb nasm objdump binutils \
radare2 strace ltrace
// test.c
#include <stdio.h>
int add(int a, int b) {
return a + b;
}
int main() {
int x = add(3, 5);
printf("%d\n", x);
return 0;
}
编译(保留调试信息,关闭优化):
gcc -m64 -O0 -g -o test test.c
objdump -d test
重点看:
mainaddcall, ret更清晰一点:
objdump -M intel -d test
gdb ./test
常用命令:
disas main
disas add
info registers
stepi
nexti
break main
run
查看汇编 + 源码:
layout asm
layout src
r2 ./test
常用命令:
aaa # 分析
s main # 跳转
pdf # 反汇编函数
适合:
call add
ret
对应:
add(3,5)
常见:
RDI, RSI, RDX, RCX, R8, R9如果你愿意,我可以:
你更偏向哪一类?