kprobe

    0热度

    1回答

    我试图在linux内核中拦截__do_page_fault()方法。注册kprobes正常方式,即限定kp.addr作为 kp.addr = (kprobe_opcode_t *) kallsyms_lookup_name("__do_page_fault"); 不工作。什么是正确的方法来做到这一点? 编辑: 拦截do_page_fault的其他方法也适用于我。

    2热度

    1回答

    我在Scientific Linux 6.3 x86_64下编写了一个内核模块,我正在使用kprobes。在这个模块中,我需要访问返回函数的第一个参数,所以jprobes不在了。 我发现这非常有帮助的帖子:Getting function arguments using kprobes 然而,当我尝试访问regs->rdi我探头内,编译器与 error: ‘struct pt_regs’ has

    1热度

    1回答

    从kprobe document: echo 'p:myprobe do_sys_open dfd=%ax filename=%dx flags=%cx mode=+4($stack)' > /sys/kernel/debug/tracing/kprobe_events 按我的理解,对X86_64平台,参数应传递到寄存器(请参阅X86_64 syscalls)。所以,我认为加上探头应该是这样的

    1热度

    1回答

    我想用fedora中的Kprobe计算系统调用malloc。 我知道malloc不是一个系统调用,并且在用户空间中实现,但是如果可能的话,我想用kprobe来计算malloc。 我必须给Kprobe系统调用的名称是什么? 例如,对于do_work: kp.addr = (kprobe_opcode_t *) kallsyms_lookup_name("do_fork");

    2热度

    2回答

    我知道Kprobes可以用来探测任何内核函数。但通过它的文件后,我意识到它主要是一种被动的实体。它只是将一个探测器放在执行序列的中间。 但是如果我想直接调用任何内核函数而不打扰执行顺序会怎么样。 我该如何做到这一点? 更新: 注:我想调用我的内核模块内部,而不是从任何用户空间应用的任何核函数。

    1热度

    1回答

    我想在do_execve上设置一个jprobe钩子来捕获每个执行的程序。 我的代码正在处理< = 3.2 linux内核(debian)。这是我在Linux内核3.2的输出: [ 628.534037] registered: do_execve, ret: 0 [ 723.995797] execve: /usr/bin/vi [ 726.807025] execve: /bin/dmesg

    3热度

    2回答

    我试图从下面的代码中删除堆栈依赖关系。 void myfunction(struct kprobe *p, struct pt_regs *regs) { register void *rregs asm("r1") = regs; register void *rfn asm("lr") = p->ainsn.insn_fn; __asm__ __vola

    4热度

    1回答

    我试图将kprobe转换为可加载的内核模块。 我能够从 内核树中运行samples/kprobes/文件夹中可用的示例。 如果我们配置的内核(CONFIG_KPROBES)Kprobes的,那么svc_entry宏将在__und_svc()处理64个字节扩展。 参考: http://lxr.free-electrons.com/source/arch/arm/kernel/entry-armv.S