insmod: ОШИБКА: не удалось вставить модуль kprobe_example.ko: операция не разрешена
Я имел в виду: http://www-users.cs.umn.edu/~boutcher/kprobes/kprobes.txt.html чтобы понять kprobe. Я использовал kprobe_example.c, как указано в документе.
Я скомпилировал его, используя make-файл (код взят из того же документа)
Я получил ошибки компиляции, потому что у меня версия ядра 4.2 и некоторые поля были изменены в struct pt_regs. Поэтому я заменил eip на ip и eflag с флагом в kprobe_example.c, который является https://gist.github.com/murlee417/87c2eb43a6afa1954b05404a07813e81. Тогда я смог успешно скомпилировать его.
Теперь, как пользователь root, я сделал:
#insmod kprobe_example.ko
и я получил:
insmod: ERROR: could not insert module kprobe_example.ko: Operation not permitted
Мой буфер сообщений имеет:
#dmesg
[ 4537.478408] Couldn't find do_fork to plant kprobe
Пожалуйста, помогите мне исправить эту ошибку и заставить работать insmod.
1 ответ
В х86 do_fork()
известен как sys_fork()
, поэтому измените код, как показано ниже
/* For each probe you need to allocate a kprobe structure */
static struct kprobe kp = {
//.symbol_name = "do_fork",
.symbol_name = "sys_fork",
};