Получить возвращаемое значение функции в обработчике kretprobe

Я хочу знать, возможно ли подключить kretprobe к функции ядра и перехватить его возвращаемое значение в обработчике возврата kretprobe.

1 ответ

Решение

Это немного старый вопрос, но для тех, кто все еще ищет ответ..

Как зарегистрировать kretprobe вы можете увидеть в документации к kprobes ( https://www.kernel.org/doc/Documentation/kprobes.txt)

Архитектурно-независимая функция, которая захватывает значение ret из системных вызовов:

#include <linux/ptrace.h>

...

int hook_retcode(struct kretprobe_instance *ri, struct pt_regs *regs)
{
    unsigned long retval = 0;

    retval = regs_return_value(regs);

    if (is_syscall_success(regs))
    {
        printk("%pf exited with a code %#lx\n", ri->rp->kp.addr, retval);
    }
    else
    {
        printk("%pf failed with a code %#lx\n", ri->rp->kp.addr, retval);
    }
}
Другие вопросы по тегам