seccomp:从父级,找到哪个系统调用导致子级在SIGSYS上死亡

时间:2018-11-01 15:32:52

标签: c linux signals seccomp

我将详细描述我的问题,请原谅我的不循规蹈矩。

我已经对seccomp-BPF和信号处理进行了一些实验。一开始,我遵循了这个tutorial

添加SIGSYS信号处理(syscall-reporter.c)之后,如果程序执行了一些无效的系统调用,我可以在下面得到一些输出:

Looks like you need syscall fstat(5) too!

我想知道如果我使用execve函数或其他方法执行任何其他可执行文件,如何打印系统调用名称。

我尝试过这样的事情:主进程(仅名为P0的进程)首先添加SIGCHLD信号处理,然后派生一个子进程(名为P1)。 P1将添加seccomp-bpf规则,并对无效的系统调用执行seccomp操作SCMP_ACT_TRAP,然后使用execve函数将P1替换为可执行文件(名为E)。当执行E并调用一些无效的系统调用时,P1将抛出SIGSYS信号并退出,然后将SIGHLD信号发送到P0。收到SIGHLD信号后,似乎P0无法从ucontext_t获取无效的系统调用名称。

P1无法打印系统调用名称本身,因为

  

在execve(2)期间,已处理的ignals的处置被重置为默认值;

(来自sigaction man-pages

对不起,我的英语不好。

0 个答案:

没有答案