Могу ли я найти все работающие модули ядра, даже если они скрыты?

Я начинаю разрабатывать модули ядра и задаюсь вопросом обо всех методах, чтобы узнать, какие модули запущены, чтобы удалить их (включая скрытые модули).

Например, следующий модуль имеет две строки, чтобы скрыть его. (Это типичный прием разработки руткитов)

#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.

0 ответов

Другие вопросы по тегам