在 CentOS 上抓取(查看)反汇编指令,常见场景有:反汇编二进制文件、反汇编正在运行的进程、内核或模块反汇编。下面按实用场景给你一套方法。
objdumpCentOS 默认可能未安装,先装:
sudo yum install -y binutils
反汇编整个可执行文件:
objdump -d ./test
只反汇编 main 函数:
objdump -d ./test | grep -A 50 '<main>:'
反汇编并显示源码(需 -g 编译):
objdump -S ./test
AT&T 语法(默认):
objdump -d ./test
Intel 语法(推荐):
objdump -M intel -d ./test
gdb(交互式)安装:
sudo yum install -y gdb
反汇编函数:
gdb ./test
(gdb) disassemble main
Intel 语法:
(gdb) set disassembly-flavor intel
(gdb) disassemble main
反汇编当前执行位置:
(gdb) disassemble
sudo gdb -p <pid>
(gdb) disassemble
查看某函数:
(gdb) disassemble function_name
gdb -p <pid>
(gdb) dump memory code.bin 0x400000 0x401000
(gdb) quit
objdump -d -b binary -m i386:x86-64 code.bin
sudo yum install -y kernel-debuginfo
crash /usr/lib/debug/lib/modules/$(uname -r)/vmlinux
crash> dis sys_open
objdump -d mymodule.ko
| 工具 | 适用场景 | 命令示例 |
|---|---|---|
| objdump | 静态分析 | objdump -M intel -d a.out |
| gdb | 动态/调试 | disassemble main |
| crash | 内核 | dis sys_call |
strip-g 编译readelf -h 确认架构如果你能说明:
我可以直接给你最合适的命令组合。