反汇编 Linux 内核通常用于调试、漏洞分析、内核学习或逆向工程。下面按常见场景和方法系统说明。
常见内核文件:
vmlinux:未压缩、含符号表(最理想)vmlinuz / bzImage:压缩镜像(需解压)/proc/kcore:运行中的内核内存(调试用)✅ 优先使用 vmlinux
objdump -d vmlinux > kernel.asm
objdump -d vmlinux | grep -A 50 "<sys_open>:"
或更精确:
objdump -d --start-address=0xffffffff81234567 \
--stop-address=0xffffffff81234600 vmlinux
objdump -S vmlinux > kernel_src_asm.txt
(需内核编译时开启 -g)
gdb vmlinux
disassemble sys_open
disassemble 0xffffffff81234567
qemu-system-x86_64 -kernel bzImage -s -S
gdb vmlinux
target remote :1234
使用 extract-vmlinux 脚本:
scripts/extract-vmlinux bzImage > vmlinux
objdump -d my_module.ko
或:
gdb my_module.ko
gdb vmlinux /proc/kcore
⚠️ 需要 root 权限,且内核未开启严格保护
在内核配置中开启:
CONFIG_DEBUG_INFO=y
CONFIG_KALLSYMS=y
如果你愿意,可以告诉我:
我可以给你更精确的命令和示例。