在 Linux 下对驱动程序(通常是 .ko 内核模块)进行反汇编,常见做法和你使用的工具取决于你想达到什么目的(分析逻辑、调试、漏洞研究、学习等)。下面按常见场景 + 工具系统说明。
Linux 驱动通常是:
.ko 文件(ELF 格式)vmlinux / Image 中反汇编主要针对 .ko 或 vmlinux
.ko 驱动模块(最常见)objdump(最基础)objdump -d your_driver.ko
常用选项:
objdump -drS your_driver.ko
-d:反汇编-r:显示重定位信息(对驱动很重要)-S:尽量混合源码(需带 -g 编译)只反汇编某函数:
objdump -d your_driver.ko | grep -A 50 "<init_module>:"
gdb(带符号)如果有调试信息:
gdb your_driver.ko
(gdb) disassemble init_module
查看所有函数:
(gdb) info functions
readelf 先了解结构readelf -h your_driver.ko
readelf -S your_driver.ko
readelf -s your_driver.ko
重点看:
.text.init.text/proc/kcore + GDB(需要 root)gdb /usr/lib/debug/vmlinux /proc/kcore
定位模块:
(gdb) info sharedlibrary
(gdb) disassemble module_name
⚠️ 需要:
CONFIG_DEBUG_INFOkcore 可读crash 工具(内核调试器)crash vmlinux /proc/kcore
crash> mod
crash> dis module_init_func
适合:
| 工具 | 用途 |
|---|---|
objdump |
快速看汇编 |
IDA Pro |
专业逆向 |
Ghidra |
免费逆向 |
radare2 |
命令行逆向 |
binwalk |
提取固件中的驱动 |
示例(radare2):
r2 your_driver.ko
aaa
s main
pdf
rip 相对寻址objdump 可能不完整hello.koobjdump -dS 对比源码gdb 分析.ko如果你愿意,可以告诉我:
.ko我可以给你更针对性的命令或示例。