在 CentOS 上进行反汇编,通常取决于你想反汇编的是 二进制可执行文件、内核模块、还是 运行中的进程。下面按常见场景给你一个实用指南。
一般系统已安装:
which objdump
如果没有:
sudo yum install binutils
sudo yum install gdb
sudo yum install radare2
或从源码安装最新版。
适合精细控制反汇编输出。
objdump -d ./test
常用参数:
objdump -d -M intel ./test
-d:反汇编代码段-M intel:使用 Intel 语法(默认是 AT&T)查看符号和地址:
objdump -d -M intel ./test | less
只反汇编某个函数:
objdump -d -M intel ./test | grep -A 20 '<main>:'
如果编译时带调试信息:
gcc -g test.c -o test
objdump -S -M intel ./test
-S:源码 + 汇编混合显示gdb ./test
disassemble
指定函数:
disassemble main
使用 Intel 语法:
set disassembly-flavor intel
disassemble main
disassemble 0x4005b6
objdump -d -M intel mymodule.ko
查看符号:
nm mymodule.ko
gdb -p <pid>
然后:
info proc mappings
disassemble 0x...
⚠️ 需要权限,可能需要:
sysctl kernel.yama.ptrace_scope=0
-M intelradare2 或 nm -Dgcc test.c -o test
objdump -d -M intel test
如果你愿意,可以告诉我:
我可以给你更针对性的命令和示例。