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