В системе x86 у меня есть модуль ядра Linux («модуль-наблюдатель»), который получает уведомление от ядра каждый раз, когда загружается конкретный модуль ядра («цель»). Практически любой модуль ядра может быть целью. Я использую это в системе приборов , над которой я работаю.
Когда модуль-наблюдатель обрабатывает такое уведомление, по какой-то причине может быть удобно, если бы наблюдатель знал адреса секций ELF загруженного целевого модуля. Есть идеи, как эту информацию можно получить в пространстве ядра?
Конечно, я мог бы, вероятно, получить содержимое соответствующих файлов в / sys / module /
в пользовательском пространстве, как только по мере загрузки цели, а затем каким-то образом передать эти данные модулю-наблюдателю, но это слишком неуклюже. Я хотел бы найти способ получить эту информацию прямо в пространстве ядра.
Насколько я видел в исходных кодах загрузчика модулей, он не сохраняет адреса секций в struct module
, а просто создает файлы sysfs для секций. Может быть, можно как-то найти объекты ядра, соответствующие этим файлам, и прочитать нужные данные из этих объектов? Или, возможно, использовать другой подход?