在 CentOS 上查看“反汇编结果”,通常取决于你想反汇编什么:
下面按常见场景给你一个实用指南。
objdump(最基础)objdump -d /bin/ls
常用参数:
objdump -d -M intel /bin/ls # Intel 语法(推荐)
objdump -d -M att /bin/ls # AT&T 语法
objdump -S /bin/ls # 源码+汇编(需带 -g 编译)
objdump -d -l /bin/ls # 显示行号
查看某个函数:
objdump -d /bin/ls | grep -A 30 '<main>'
gdb(交互式反汇编)gdb /bin/ls
在 gdb 中:
disassemble main
disassemble
disassemble 0x400520, 0x400560
Intel 语法:
set disassembly-flavor intel
disassemble main
readelf(查看结构,不直接反汇编)readelf -h /bin/ls # ELF 头
readelf -S /bin/ls # 段表
readelf -s /bin/ls # 符号表
ps aux | grep xxx
gdb -p <pid>
info proc mappings
disassemble <函数名>
objdump -d mydriver.ko
crash /usr/lib/debug/lib/modules/$(uname -r)/vmlinux
dis sys_open
yum install radare2
r2 /bin/ls
aa
pdf @ main
CentOS 默认 gcc 是 AT&T 语法,但 objdump/gdb 可用:
-M intel
set disassembly-flavor intel
nm 看不到函数 → 用 strip 前的版本如果你愿意,可以告诉我:
我可以直接给你针对性命令示例。