调试 Linux 下的反汇编代码,通常分 “静态分析” 和 “动态调试” 两条路线,也可以两者结合。下面按实用角度给你一套清晰流程。
常见工具:
sudo apt install gdb objdump radare2 ltrace strace nasm gcc
推荐组合:
objdump -d ./a.out
常用选项:
objdump -d -M intel ./a.out # Intel 语法
objdump -S ./a.out # 源码+汇编(需 -g 编译)
readelf -h ./a.out # ELF 头
readelf -s ./a.out # 符号表
nm ./a.out
objdump -d ./a.out | grep -A 30 "<main>:"
gcc -g -no-pie -fno-stack-protector test.c
gdb ./a.out
disassemble main
layout asm
layout regs
break main
run
stepi # 单步(汇编级)
nexti
info registers
x/10i $pc
x/16xw $rsp
x/s 0x4005b0
set $rip=0x400560
set var=1
readelf -h ./a.out
# Entry point address
break *0x400500
run
r2 ./a.out
aa
s main
pdf
strace ./a.out
ltrace ./a.out
gdb -p <pid>
或:
set follow-fork-mode child
file / readelf 确认架构objdump 看整体逻辑gdb 下断点(main / 入口)stepi 观察寄存器变化strace 看外部行为*地址 或 break main-O0如果你有具体场景(比如:
可以直接贴代码或现象,我可以一步步带你调。