在 CentOS(或其他 Linux 发行版)上使用 GDB(GNU Debugger)反汇编指令,通常有几种常见方式。下面按使用场景给你一个实用指南。
sudo yum install -y gdb
如果是 CentOS 8 / Stream:
sudo dnf install -y gdb
gcc -g -O0 test.c -o test
-g:生成调试信息-O0:关闭优化,反汇编更直观gdb ./test
disassemble
或
disas
disassemble main
disassemble 0x400520, 0x400560
disassemble $pc
disassemble /m main
/m:混合显示源码和汇编CentOS 默认是 AT&T 语法(可读性较差)
set disassembly-flavor intel
查看当前设置:
show disassembly-flavor
示例:
(gdb) set disassembly-flavor intel
(gdb) disas main
break main
run
stepi
或
si
nexti
或
ni
info registers
或简写:
info reg
查看特定寄存器:
print $rax
x/10i $pc
x:查看内存10:10 条i:instruction(汇编)示例:
x/5i $rip
gdb ./test
(gdb) set disassembly-flavor intel
(gdb) break main
(gdb) run
(gdb) disassemble /m main
(gdb) si
(gdb) info reg
-g-O2)可手动编译新版 GDB,或使用 gdbserver
如果你有 具体程序 / 架构(x86 / x64 / ARM) / 想分析哪段代码,我可以给你更针对性的反汇编示例。