1
我正在編寫一個涉及tasklist_lock
,__bss_start
的內核模塊。如何從LKM獲取Linux內核的數據段
這些符號未導出。我敢肯定,即使不出口,我們可以使用kernsym_lookup_name()
參考How my custom module on linux 3.2.28 can make a call to print_cpu_info?
$ vim System.map
...
80017be0 T register_undef_hook
80017c28 T unregister_undef_hook
80017c70 T do_unexp_fiq
...
806eb000 D mmlist_lock
806eb040 D tasklist_lock
806eb080 d softirq_vec
....
T
代表文本符號訪問從文字部分的符號。
D
和d
表示數據段符號。
我可以使用kallsyms_lookup_name()
訪問register_undef_hook()
和unregister_undef_hook()
。
但不是tasklist_lock
。
請從內核模塊(LKM)分享您的知識以訪問tasklist_lock
。
這個我試過了。這適用於類型爲「T」的符號,但不適用於「D」類型。 – Jeyaram
所以你將不得不使用硬編碼的地址......或從內核導出它,顯然你有壞設計看到這裏......或者你正在嘗試做rootkit http://stackoverflow.com/questions/ 2103315/linux-kernel-system-call-hooking-example – 0x90
我無法修改內核端。但硬編碼地址將解決我目前的情況,但不是永久的解決方案。無論如何感謝您的努力。 – Jeyaram