Я написал простой хук, который меняет указатель на sys_call_table и указывает функцию execve на мою функцию, хук прекрасно работает на Ubuntu в ядре 4.15, но когда я попробовал его на системе Centos 8 в ядре 4.18, он подал и перезагрузил система. как это можно сделать в новых ядрах?
это мой код:
static int lkm_example_init(void)
{
write_cr0(read_cr0() & (~ 0x10000));
sys_call_table = (void*)kallsyms_lookup_name("sys_call_table");
original_call = sys_call_table[__NR_kill];
sys_call_table[__NR_kill] = our_sys_kill;
execl = sys_call_table[__NR_execve];
sys_call_table[__NR_execve] = our_execl;
}