温馨提示×

反汇编linux内核用何指令

小樊
33
2026-10-24 00:44:00
栏目: 智能运维

在 Linux 下对**内核(vmlinux / 内核模块)**进行反汇编,通常使用 objdump、gdb、或专用工具。下面按常见场景说明。


一、反汇编内核映像(vmlinux)

vmlinux 是未压缩、带符号的内核 ELF 文件(通常在源码根目录或 arch/x86/boot/ 之外)。

1️⃣ 最常用:objdump

objdump -d vmlinux > vmlinux.asm
  • -d:反汇编可执行代码段
  • 查看某函数:
objdump -d vmlinux | grep -A 50 "<sys_open>:"

带源码混合(需编译时 -g):

objdump -S vmlinux > vmlinux.S

指定架构(如 ARM):

objdump -d -m arm vmlinux

二、反汇编内核模块(.ko)

objdump -d mymodule.ko

或只反汇编某个函数:

objdump -d mymodule.ko | grep -A 30 "<init_module>:"

三、使用 GDB(推荐调试用)

gdb vmlinux
(gdb) disassemble start_kernel

或:

(gdb) disassemble 0xffffffff81000000

配合 QEMU + KGDB 可实时反汇编运行中的内核。


四、反汇编压缩内核(bzImage)

bzImage 不能直接反汇编,需要先提取 vmlinux:

x86 提取方法

scripts/extract-vmlinux bzImage > vmlinux

然后再用 objdump。


五、专用工具(高级)

  • bpftrace / perf
perf annotate func_name
  • radare2 / ghidra(二进制分析)
  • llvm-objdump(LLVM 工具链)

六、常见注意事项

✅ 必须 vmlinux 而非 bzImage
✅ 编译内核时建议:

CONFIG_DEBUG_INFO=y
CONFIG_KALLSYMS=y

✅ 架构必须匹配(x86 / arm / arm64)


七、一句话总结

反汇编 Linux 内核核心指令:

objdump -d vmlinux

如果你告诉我:

  • 内核架构(x86 / ARM)
  • 是否运行中内核
  • 是否要逆向分析 / 调试

我可以给你更精确的命令或流程。

0 踩