用途:面向内核态载荷与驱动的逆向分析,包括恶意驱动、rootkit、反作弊与 EDR 对抗、闭源驱动的静态逆向与运行时验证;也用于恢复 capability 系统(如 seL4)的对象图、capability 分布与 IPC 拓扑,判断目标系统行为为何不同于普通操作系统。不适用于 UEFI/引导阶段 bootkit、RTOS 内核对象、eBPF、TEE/TrustZone,以及仅做内核调试与崩溃定位的场景。
主要能力:按平台区分单元形态、加载与签名模型、类型信息来源与观测面。Windows 侧先分驱动模型(WDM/KMDF/UMDF/minifilter/NDIS),再谈 .sys、SCM 注册、驱动签名与 PDB/WDK 类型;Linux 侧关注 .ko 的 ET_REL 形态、vermagic、符号 CRC、BTF、加载与动态 patching 机制;macOS 侧区分 KEXT、DEXT/DriverKit 与 System Extension 三套模型;Android 侧关注 GKI 与 vendor module、KMI 符号白名单;另覆盖 seL4、Fuchsia/Zircon、FreeBSD、illumos/Solaris、OpenBSD、NetBSD、Genode、MINIX 3、Plan 9、HelenOS、Redox、Haiku 等系统的驱动与内核对象模型。核心方法是先确认身份(磁盘/运行/加载集合中的版本与构建),再解析类型与符号,切分功能骨架,枚举 hook 落点并做 cross-view 交叉验证。
使用方式:按平台选择工具。Windows 用 Ghidra/IDA 导入 WDK 内核类型、WinDbg 双机或 KDNET 调试;Linux 用 readelf/objdump -r 查看 ET_REL 与 relocation、modinfo 读取 vermagic/依赖/签名/livepatch、pahole/bpftool 处理 BTF、bpftrace/perf probe 与 ftrace 做运行时观测;macOS 用 otool/vmmap/ioreg/kmutil/codesign -d --entitlements/lldb;Android 用 modinfo/readelf 与 KMI symbol list、Module.symvers 比对。测试签名仅在调试 VM 内开启:bcdedit /set testsigning on(需关 Secure Boot)。
限制与陷阱:磁盘版本不等于运行版本,init-only 段已释放、AuxKC 可能仍在跑旧版本、Android 可能加载另一分区的同名模块;签名尾、livepatch 节、split BTF 等属于合法形态而非损坏;RANDSTRUCT、MODVERSIONS、KMI 分支会让“同版本”实际不同;单一视图不能判定“无 hook / 无隐藏模块”,需 cross-view,矛盾时优先信离线内存取证。