I am doing an exercise where I need to hide my kernel from lsmod
but I can still remove it using rmmod
. To do that I hook the delete module function and want to check the deleted module name
but I can't make it work.
module_name
is always empty (even if I use copy_from_user()
) but name_len
always contains value that is greater than 0 (kernal version 5.19.0-40-generic)
asmlinkage long delete_module_func(const char __user *name_user, unsigned int flags)
{
long ret;
char module_name[256];
int name_len;
struct module *mod;
name_len = strncpy_from_user(module_name, name_user, sizeof(module_name));
printk(KERN_INFO "name_len %d", name_len);
if (name_len <= 0 ) {
printk(KERN_INFO "failed");
goto done;
}
done:
ret = orig_delete_module_func(name_user, flags);
return ret;
}