Вопрос по linux-kernel – Как напечатать трассировку стека пользовательских пространств в пространстве ядра Linux

2

Скажем, я подключаю обработчик sys_ * (например, sys_open); когда я нахожу аргумент, переданный из пространства пользователя, вредоносным, я печатаю трассировку стека пространства пользователя Как мне это сделать?

(dump_stack () печатает только стек ядра)

Ваш Ответ

2   ответа
0

oprofile поддерживает трассировки стеков пространства пользователя, которые вычисляются в ядре путем обхода стеков пространства пользователя. (Но обратите внимание: он не разрешает символы; это делается инструментами отчетности в пространстве пользователя.)

Если бы мне пришлось решать эту проблему, я бы начал (снова) смотреть на код oprofile и просто использовать / адаптировать то, что есть.

Может быть, этот вид "злонамеренный" событие может быть просто смоделировано как некое событие, которое нужно записать, хм.

3

Вы можете отправить сигнал (например, SIGBUS, SIGKABRT), который может генерировать файл дампа ядра, целевому процессу в ядре.

Например:

 do_send_sig_info(SIGABRT, SEND_SIG_FORCED, current, true);

Затем вы можете использовать GDB, чтобы показать обратный след сгенерированного файла ядра.

Это очень сложно с ограниченной областью применения.

Похожие вопросы