在 CentOS 下做“反汇编 + 看内存”,通常取决于你用的是什么工具。下面按常见场景给你一个实用指南。
objdump 反汇编看“静态内存布局”objdump -d test
或带源码:
objdump -d -S test
objdump -h test
你会看到:
.text:代码.data:已初始化全局变量.bss:未初始化全局变量.rodata:只读数据objdump -t test
# 或
nm test
gdb 反汇编 + 看“运行时内存”这是最常用、最推荐的方式。
gdb ./test
disassemble main
或 AT&T / Intel 语法:
set disassembly-flavor intel
disassemble main
x/10x 0x4005b6
格式:
x /Nfu 地址
例子:
x/16xw 0x601040 # 16个4字节十六进制
x/s 0x400600 # 字符串
x/10i 0x4005b6 # 反汇编内存中的指令
info registers
x/10x $rsp
x/10x $rax
p &a
x/4xw &a
cat /proc/<pid>/maps
示例:
00400000-00401000 r-xp 00000000 test
00600000-00601000 rw-p 00000000 test
info proc mappings
gdb ./test
(gdb) break main
(gdb) run
(gdb) disassemble
(gdb) info registers
(gdb) x/20xw $rsp
objdumpgdb/proc/pid/maps如果你能告诉我:
我可以直接给你对应命令模板。