Как изменить таблицу системных вызовов Linux в версии ядра 6+?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как изменить таблицу системных вызовов Linux в версии ядра 6+?

Сообщение Anonymous »

Мне нужно указать внешней библиотеке выполнить системный вызов функции, определенной в моем приложении пользовательского пространства.
  • Я не могу использовать LD_PRELOAD, потому что я нужна статическая связь.
  • Я не могу использовать ftrace/модуль ядра Linux для перехвата вызова, поскольку для этого потребуется, чтобы функция находилась в пространстве ядра и это невозможно. Это C++ и довольно много кода.
А как насчет модуля ядра, изменяющего таблицу системных вызовов, чтобы она указывала на адрес функции? Мое приложение найдет функцию по тому же адресу.
Можно ли перезаписать таблицу системных вызовов в последних ядрах Linux?Раньше вы могли найти таблицу с помощью kallsyms_lookup_name и изменить значение CR0, чтобы предоставить разрешения. Однако я думаю, что ядро ​​Linux 5 или 6 внесло изменения, чтобы остановить это. Однако я не до конца понимаю, насколько изменения остановили это. Я думаю, они прекратили экспортировать kallsyms_lookup_name, так что, может быть, это все еще возможно, просто более сложно?
(Я знаю, что редактирование таблицы не одобряется, но это не для клиентов использования нет никаких последствий для безопасности/это закрытая система).

Подробнее здесь: https://stackoverflow.com/questions/786 ... -version-6
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»