insmod:错误:无法插入模块kprobe_example.ko:不允许操作

时间:2016-09-19 07:06:33

标签: c linux-kernel fork insmod kprobe

我指的是: http://www-users.cs.umn.edu/~boutcher/kprobes/kprobes.txt.html了解kprobe。我使用了文档中给出的kprobe_example.c。

我使用makefile编译它(代码取自同一文档)

我遇到了编译错误,因为我的内核版本是4.2,并且在struct pt_regs中更改了一些字段。所以我在kprobe_example.c中使用ip和eflag替换了eip,这是https://gist.github.com/murlee417/87c2eb43a6afa1954b05404a07813e81。然后我就能够成功编译它。

现在,作为root用户,我做了:

#insmod kprobe_example.ko

我得到了:

insmod: ERROR: could not insert module kprobe_example.ko: Operation not permitted

我的消息缓冲区有:

#dmesg  
[ 4537.478408] Couldn't find do_fork to plant kprobe

请帮我解决此错误并使insmod正常工作。

1 个答案:

答案 0 :(得分:0)

在x86 do_fork()中称为sys_fork(),因此请更改以下代码

/* For each probe you need to allocate a kprobe structure */
static struct kprobe kp = {
    //.symbol_name  = "do_fork",
    .symbol_name    = "sys_fork",
};