kprobe

    2热度

    1回答

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

    0热度

    1回答

    我指的是: http://www-users.cs.umn.edu/~boutcher/kprobes/kprobes.txt.html以了解kprobe。我使用了doc中给出的kprobe_example.c。 我使用生成文件(即在同一文档拍摄代码) 我得到的编译错误,因为我的内核版本是4.2,有些领域在结构pt_regs被改变编译它。因此,我用ip和eflag替换了eipg,并在kprobe_

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

    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