Могу ли я заблокировать выполнение нового процесса с помощью Kprobe? - PullRequest
0 голосов
/ 24 ноября 2018

Kprobe имеет функцию предварительного обработчика, смутно задокументированную следующим образом:

User's pre-handler (kp->pre_handler)::

    #include <linux/kprobes.h>
    #include <linux/ptrace.h>
    int pre_handler(struct kprobe *p, struct pt_regs *regs);

Called with p pointing to the kprobe associated with the breakpoint,
and regs pointing to the struct containing the registers saved when
the breakpoint was hit.  Return 0 here unless you're a Kprobes geek.

Мне было интересно, можно ли использовать эту функцию (или любую другую функцию Kprobe), чтобы предотвратить выполнение \ разветвление процесса.

1 Ответ

0 голосов
/ 24 ноября 2018

Как описано в документации к ядру, вы можете изменить путь выполнения, изменив соответствующий регистр (например, IP-регистр в x86):

Changing Execution Path
-----------------------

Since kprobes can probe into a running kernel code, it can change the
register set, including instruction pointer. This operation requires
maximum care, such as keeping the stack frame, recovering the execution
path etc. Since it operates on a running kernel and needs deep knowledge
of computer architecture and concurrent computing, you can easily shoot
your foot.

If you change the instruction pointer (and set up other related
registers) in pre_handler, you must return !0 so that kprobes stops
single stepping and just returns to the given address.
This also means post_handler should not be called anymore.

Note that this operation may be harder on some architectures which use
TOC (Table of Contents) for function call, since you have to setup a new
TOC for your function in your module, and recover the old one after
returning from it.

Таким образом, вы можете заблокировать выполнение процессаперепрыгивая через некоторый код.Я не рекомендовал бы это;вы скорее всего вызовете сбой ядра, чем прекратите выполнение нового процесса.

seccomp-bpf, вероятно, лучше подходит для вашего случая использования. Этот ответ StackOverflow дает вам всю информацию, необходимую для использования seccomp-bpf.

...