替换linux内核系统调用:未知符号current_kprobe

时间:2015-10-29 14:01:23

标签: linux linux-kernel

我正在尝试用可加载模块替换linux内核系统调用(sys_read)并使用kprobes。

所以,在handler_pre中我用一个函数指针替换regs-> ip值,我想调用它,然后我调用reset_current_kprobe

static int handler_pre(struct kprobe *p, struct pt_regs *regs)
{
    printk(KERN_INFO "pre_handler: p->addr = 0x%p, ip = %lx,"
            " flags = 0x%lx\n",
        p->addr, regs->ip, regs->flags);
    regs->ip = (unsigned long)&my_sys_read;
    reset_current_kprobe();
    return 1;
}

但是当我尝试使用insmod导入我的模块时,出现以下错误:Unknown symbol current_kprobe (err 0)

如果我不调用reset_current_kprobe,当我调用被替换的函数时,我在fault_handler中遇到一个异常,其中陷阱号为14

我正在使用linux版本4.3.0-rc4,我用qemu

测试它

谢谢!

0 个答案:

没有答案