我正在玩隐藏在 Linux Kernel 3.x 上的内核模块。我尝试从 /sys/module 隐藏和恢复模块。在内核版本 3.0 和 3.2.6 上一切正常。我可以加载和卸载模块并隐藏和取消隐藏它。当我在内核 3.6.6 上卸载模块时,出现以下错误:
rmmod:错误:无法打开'/sys/module/xxx/holders':没有这样的文件或目录rmmod:错误:模块xxx正在使用中
有谁知道我如何恢复模块的 struct kobject *holders_dir 以便我能够卸载它而不会出错?
这是我的代码:
/* hide from /sys/module */
kobject_del(&__this_module.mkobj.kobj);
list_del(&__this_module.mkobj.kobj.entry);
/* add to /sys/module */
kobject_add(&__this_module.mkobj.kobj,__this_module.mkobj.kobj.parent,"xxx");