0

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

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

我收到编译错误,因为我的内核版本是 4.2,并且 struct pt_regs 中的某些字段已更改。因此,我将 eip 替换为 ip 并将 eflag 替换为 kprobe_example.c 中的标志,即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 工作。

4

1 回答 1

0

在 x86do_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",
};
于 2016-10-05T16:01:45.203 回答