Создание новых системных вызовов через KLD во FreeBSD
Существуют ли какие-либо хорошие (начального уровня) руководства по добавлению системных вызовов во FreeBSD через загружаемые модули ядра? В частности, требуемая форма методов, получение информации из процессов и т. д.
1 ответ:
Я очень рад видеть, что ваш профессор дает вам такие практические задания. Жаль, что у меня нет таких профессоров.
В любом случае, когда вы работаете в домене ядра, вы вряд ли можете найти какие-либо ресурсы. Люди, работающие в домене ядра, не документируют материал и не пишут учебники. Поэтому очень трудно найти какие-либо документы "начального уровня". Кроме того, даже если вы найдете такой учебник, вещи в ядре продолжают меняться, и документ не будет обновляться. Когда я сначала я должен был учиться, читая код ядра.
Еще одна важная вещь-Linux более документирован, чем любой UNIX. Иногда вы можете прочитать материал Linux и перенести эти знания в UNIX. Хватит жаловаться. Теперь вот ресурсы, которые могут вам помочь.
BSD UNIX:
- динамический Компоновщик ядра (KLD) учебник по программированию объектов имеет "скелет реализации KLD Syscall"
- проектирование руткитов BSD: An Введение в Kernel Hacking это учит вас другому подходу, использующему исправление ядра во время выполнения (обычно троянцы используют этот подход) для исправления диспетчера системных вызовов и создания системного вызова.
Linux:
- добавление системного вызова в ядро Linux : пошаговое руководство
- команда ядра с использованием системных вызовов Linux : изучите интерфейс системных вызовов Linux (SCI), узнайте, как добавлять новые системные вызовы (и Альтернативы для этого)