我开始开发内核模块,我想知道所有方法都知道哪些模块正在运行以便删除它们(包括它们隐藏的模块)。
E.g。以下模块有两行以隐藏他。 (这是典型的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列表中。