Связь с драйвером ядра может принимать различные формы.Обычно для связи существует специальный файл устройства или может быть специальный тип сокета, например NETLINK.Если вам повезет, есть символьное устройство, для которого read () и write () являются единственным средством взаимодействия - если это так, то эти вызовы легко перехватить с помощью различных методов.Если вам не повезло, многие вещи выполняются с помощью ioctls или чего-то еще более сложного.
Однако, если запустить программу «strace» с помощью драйвера ядра для связи, можно обнаружить практически все, что он делает, хотя «ltrace»может быть более читабельным, если есть библиотеки, которые программа использует для связи.Настроив аргументы на «strace», вы, вероятно, можете получить дамп, содержащий только ту информацию, которая вам нужна:
- Сначала просто посмотрите на вызовы и попытайтесь выяснить способы взаимодействия с ядром
- Затем добавьте фильтры для вызова strace, чтобы регистрировать только вызовы связи ядра
- Наконец, убедитесь, что strace регистрирует полные строки всех вызовов, чтобы вам не приходилось обрабатывать усеченные данные
Ответы, которые указывают на отладку IPC, вероятно, не имеют значения, поскольку связь с ядром почти никогда не имеет ничего общего с IPC (по крайней мере, с различными средствами IPC UNIX).