温馨提示×

centos反汇编怎样看内存

小樊
41
2026-09-27 08:28:04
栏目: 智能运维

在 CentOS 下做“反汇编 + 看内存”,通常取决于你用的是什么工具。下面按常见场景给你一个实用指南。


一、用 objdump 反汇编看“静态内存布局”

1. 反汇编

objdump -d test

或带源码:

objdump -d -S test

2. 看节区(内存区域)

objdump -h test

你会看到:

  • .text:代码
  • .data:已初始化全局变量
  • .bss:未初始化全局变量
  • .rodata:只读数据

3. 看符号对应的内存地址

objdump -t test
# 或
nm test

二、用 gdb 反汇编 + 看“运行时内存”

这是最常用、最推荐的方式。

1. 启动 gdb

gdb ./test

2. 反汇编函数

disassemble main

或 AT&T / Intel 语法:

set disassembly-flavor intel
disassemble main

3. 看内存内容(重点)

看某个地址的内存

x/10x 0x4005b6

格式:

x /Nfu 地址
  • N:个数
  • f:格式(x十六进制,d十进制,s字符串,i指令)
  • u:单位(b字节,h半字,w字,g8字节)

例子:

x/16xw 0x601040      # 16个4字节十六进制
x/s 0x400600         # 字符串
x/10i 0x4005b6       # 反汇编内存中的指令

4. 看寄存器指向的内存

info registers
x/10x $rsp
x/10x $rax

5. 看变量内存

p &a
x/4xw &a

三、看“进程实际内存布局”

1. /proc 方式

cat /proc/<pid>/maps

示例:

00400000-00401000 r-xp 00000000 test
00600000-00601000 rw-p 00000000 test

2. gdb 中看映射

info proc mappings

四、常见组合示例(反汇编 + 内存)

gdb ./test
(gdb) break main
(gdb) run
(gdb) disassemble
(gdb) info registers
(gdb) x/20xw $rsp

五、小建议

  • 想看代码逻辑 → objdump
  • 想看运行时真实内存 → gdb
  • 想看堆/栈/映射 → /proc/pid/maps

如果你能告诉我:

  • 用的是 gdb / objdump / radare2 / IDA
  • 看的是 栈、堆、全局变量还是指令

我可以直接给你对应命令模板。

0 踩