温馨提示×

centos反汇编如何调试

小樊
44
2026-09-12 02:15:16
栏目: 智能运维

在 CentOS 上进行“反汇编 + 调试”通常结合 GDB + objdump/readelf 等工具。下面按常见场景给你一个实用指南。


一、准备环境(CentOS)

1. 安装必要工具

sudo yum install -y gdb binutils gcc make

如果是 CentOS 8+:

sudo dnf install -y gdb binutils gcc make

二、编译可调试的程序

推荐编译选项

gcc -g -O0 -o test test.c

说明:

  • -g:包含调试符号
  • -O0:不优化,便于反汇编对照源码

三、使用 GDB 进行反汇编调试(最常用)

1. 启动 GDB

gdb ./test

2. 查看反汇编

disassemble main

或查看某函数:

disassemble func_name

3. 显示源码 + 汇编(强烈推荐)

layout split

或:

layout asm

4. 设置断点

break main
run

5. 单步执行

stepi     # 汇编级单步
nexti     # 汇编级 next

6. 查看寄存器

info registers

7. 查看内存

x/10x $rsp
x/5i $rip

四、使用 objdump 静态反汇编

1. 反汇编整个程序

objdump -d test

2. 反汇编并带源码(有 -g 时)

objdump -S test

3. 查看符号表

readelf -s test

4. 查看段信息

readelf -l test

五、无符号程序的调试(strip 后)

如果程序被 strip:

file test
# test: stripped

方法

  • 使用 objdump -d
  • GDB 中直接反汇编地址:
disassemble 0x4005b0
  • 手动设置入口点:
info file

六、常见调试技巧

1. 在 GDB 中切换到 AT&T / Intel 语法

set disassembly-flavor intel

2. 反汇编当前函数

disassemble

3. 查看调用栈

bt

4. 跟踪系统调用

strace ./test

七、典型工作流示例

gcc -g -O0 test.c -o test
gdb ./test
(gdb) break main
(gdb) run
(gdb) layout split
(gdb) stepi
(gdb) info registers

如果你有具体场景(比如:

  • 调试崩溃
  • 分析无源码二进制
  • 内核模块
  • 逆向 malware
  • 64 位 / 32 位差异)

可以直接说,我可以给你更针对性的步骤或命令。

0 踩