Я бы хотел получать событие в ядре при каждом новом запуске (fork + execve или posix_spawn) и иметь возможность предотвращать эти операции.
Первым вариантом будет использование платформы Mac с именем mpo_vnode_check_exec
путем подключения к этому методу с функцией, которая возвращает 0, когда доступ разрешен, или проверкой, отложенной до следующего перехвата. Ненулевое возвращаемое значение означает, что в доступе отказано сразу.
К сожалению, этот фреймворк не поддерживается Apple, и я хочу использовать стабильную альтернативу, такую как kauth fileop scope с флагом KAUTH_FILEOP_EXEC
.
Тем не менее, эта структура предназначена только для обнаружения и не имеет возможности предотвращения.
Возможно, есть способ предотвратить запуск процесса, когда я получаю релевантный обратный вызов kauth при создании процесса, или остановить процесс до тех пор, пока я не решу, должен ли он выполняться или нет (и приведу в исполнение вердикт в другом потоке).
спасибо