2015-01-16 68 views
0

我試圖在linux內核中攔截__do_page_fault()方法。註冊kprobes正常方式,即限定kp.addr作爲Kprobe機制攔截do_page_fault

kp.addr = (kprobe_opcode_t *) kallsyms_lookup_name("__do_page_fault"); 

不工作。什麼是正確的方法來做到這一點?

編輯: 攔截do_page_fault的其他方法也適用於我。

+0

請指定「不工作」的含義。有錯誤嗎?還有別的嗎? – ptd

+0

在執行insmod時,出現錯誤:「錯誤:無法插入模塊:無效的參數」 – user1344

+0

編輯您的問題以粘貼完整模塊 –

回答

1

當模塊中未使用GPL許可證時,通常會出現此錯誤。在模塊中添加以下行應刪除此錯誤:

MODULE_LICENSE("GPL"); 
MODULE_LICENSE("GPL v2"); 
+0

嗯,我發現(至少)在最近的內核上4.4.0-rc6源),__do_page_fault例程標記爲 NOKPROBE_SYMBOL(__ do_page_fault); 宏在函數定義的末尾。 此外,/ sys/kernel/debug/kprobes/blacklist確認它被列入黑名單。 所以,只是好奇,它怎麼工作? – kaiwan