Я делаю исследование о руткитах и я получил много предупреждений like`set_memory_ * функция в ядре Linux> = 2.6.25
"BUG: unable to handle kernel paging request at [addr]"
, когда я попытался прикрепить свою собственную функцию sys_call_table[__NR_read]
, для пример.
В ядрах < = 2.6.25, функция change_page_attr()
помогла с изменением атрибутов страницы определенного адреса. Однако в новых ядрах> = 2.6.28 эта функция устарела и заменяется функциями set_memory_*
, относящимися к PAT.
Документация ядра Linux не ясна в отношении использования функций PAT; Я использовал set_memory_wc()
& set_memory_uc()
, чтобы изменить разрешения sys_call_table
, но я продолжаю получать тот же BUG. Эти функции, я думаю, заменяют старые change_page_attr()
.
Я видел один пример в модуле i915, и я использовал функции таким же образом, но BUG продолжается.
Оказание помощи по этому вопросу? Я неправильно обрабатываю адреса ядра?
Зачем нужен _restore_ после установки в режим, отличный от обратной записи? Я также читал в документах Linux, что 'set_memory_ [uc | wc | wt]' и 'set_memory_wb' должны использоваться парами, чтобы вернуть режим для обратной записи после использования, но никаких объяснений относительно мотивации не содержится. – sherrellbc