2

我开始开发内核模块,我想知道所有知道哪些模块正在运行以删除它们的方法(包括它们隐藏的模块)。

例如下面的模块有两行为了隐藏他。(这是典型的rootkit开发技巧)

#include <linux/module.h>
#include <linux/init.h>
#include <linux/kernel.h>

MODULE_LICENSE("GPL");
int example_init(void);
void example_exit(void);
module_init(example_init);
module_exit(example_exit);

int example_init(void) {
    list_del_init(&__this_module.list);         // Deletes entry from list and reinitialize it
    kobject_del(&THIS_MODULE->mkobj.kobj);      // Unlink kobject from hierarchy 
    printk("Example: module loaded\n");
    return 0;
}

void example_exit(void) {
   printk("Example: module removed\n");
}

加载模块时,您可以使用 dmesg、lsmod、modinfo、modprobe、/proc/modules、/sys/module 或 /proc/kallsyms 查看信息

我的问题是是否存在知道(和删除)这个模块的方法?显然, rmmod 不起作用,因为该模块没有出现在 /proc/modules 列表中。

4

0 回答 0