温馨提示×

gdb反汇编linux怎么操作

小樊
51
2026-09-15 15:10:23
栏目: 智能运维

在 Linux 下使用 GDB 进行反汇编 通常有以下几种常见操作方式,从基础到进阶给你梳理一下。


一、准备环境

1. 编译程序(带调试信息)

gcc -g -o test test.c

如果是分析无源码的二进制:

gcc -o test test.c

2. 启动 GDB

gdb ./test

二、最常用:反汇编函数

1. 反汇编当前函数

disassemble

2. 反汇编指定函数

disassemble main

3. 反汇编指定地址范围

disassemble 0x4005b6, 0x400600

三、混合反汇编(汇编 + C 源码)

1. 显示源码和汇编混合

disassemble /m main

2. 显示汇编 + 源码(推荐)

layout split

或:

layout asm

四、反汇编当前执行位置

当程序停在断点处:

disassemble $pc

或简写:

x/10i $pc

五、设置汇编格式(AT&T / Intel)

Linux 默认是 AT&T 语法,很多人更喜欢 Intel:

set disassembly-flavor intel

查看当前设置:

show disassembly-flavor

六、单步执行汇编指令

start
stepi      # 单步一条汇编指令
nexti      # 单步(不进入函数)

查看寄存器:

info registers

七、查看内存中的机器码

x/20i 0x4005b6

或查看字节:

x/20xb 0x4005b6

八、对无符号二进制文件

gdb ./a.out
(gdb) info functions
(gdb) disassemble 0x400000

若没有符号:

set architecture i386:x86-64

九、常见组合示例

(gdb) set disassembly-flavor intel
(gdb) break main
(gdb) run
(gdb) disassemble /m main
(gdb) stepi
(gdb) info registers

十、补充工具(非 GDB)

如果 GDB 不够直观,也可以配合:

  • objdump -d test
  • radare2
  • Ghidra

如果你愿意,可以告诉我:

  • 是 有源码调试 还是 逆向分析
  • x86 / x64 / ARM
  • 是否想看 函数调用过程 / 栈 / 寄存器

我可以给你更针对性的 GDB 反汇编流程。

0 踩