我想调试一个已加载的内核模块,但我没有源代码;我怀疑这是病毒。有没有办法将其输入GDB进行分析?
答案1
从调试的角度来看,内核是一个特殊的“进程”,与用户空间进程不同,用户空间进程通过某种 rpc 机制(系统调用)或映射内存与内核进行通信。
我认为仅仅通过检查一些随机用户进程就可以看到内核的数据结构。
另一个问题是,每个用户空间进程(包括调试器)都需要内核来运行并与用户通信;我不认为您可以停止内核并相信调试器将继续运行。
所以你需要在第二台机器上运行GDB,这就是所谓的内核调试。
请参阅 (http://kgdb.linsyssoft.com/,Documentation/sh/kgdb)了解更多详细信息。
答案2
除 KGDB 之外的其他选项是使用 QEMU 和 GDB 调试内核。与 KGDB 不同,QEMU-GDB 组合只需要一台机器。