Полагаю, что-то не так в твоих зацепкахЛибо вы подключаете неправильное смещение таблицы системных вызовов, либо вы полностью выключены.Я не мог понять, почему явно вы начинаете поиск с помощью ksys_close (), особенно когда это встроенная функция.Вы должны попытаться найти символ таблицы системных вызовов следующим образом:
typedef void (*_syscall_ptr_t)(void);
_syscall_ptr_t *_syscall_table = NULL;
_syscall_table=(_syscall_ptr_t *)kallsyms_lookup_name("sys_call_table");
Другая (огромная) проблема, с которой я сталкиваюсь, это сброс CR0, который позволяет всему внутри вашей системы записывать в постоянную память навремя написания, вместо того, чтобы переходить по страницам и устанавливать бит W на конкретной странице, которую вы собираетесь редактировать.
Еще один небольшой совет: вам нужно завершить ловушку, чтобы перенаправить к открытому оригиналуСистемный вызов.В противном случае вы получите полное чтение системы из STDIN для каждого вновь открытого файлового дескриптора (который, в конечном итоге, убьет вашу систему)