我已給出「將系統調用編寫爲內核模塊」的分配。現在,據我在互聯網上的閱讀,我可以理解,將系統調用作爲內核模塊並不是完全可能的,但是可以攔截現有的系統調用。這是做到這一點的正確方法嗎? 我在這個博客上發現了一個這樣的例子:http://syprog.blogspot.in/2011/10/hijack-linux-system-calls-part-i.html將系統調用編寫爲內核模塊
0
A
回答
2
在linux中sys_call_table包含所有系統調用的函數指針。這個表最初是在2.4的日子裏被導出的,然後它變成了靜態的,然後它又被導入了一些最新的內核。讓我們舉兩個例子。
案例1. sys_call_table已導出。
在內核模塊中使用以下行。
sys_call_table [AVAILABLE_INDEX] = new_sys_call;
新的系統調用可以實現爲。
asmlinkage new_sys_call(...){}
案例 - 2)sys_call_table的不出口。
嘗試通過在System.map
grepping獲得sys_call_table的地址$貓System.map | grep的sys_call_table的
硬代碼的模塊中的值。
如果這不可用,那麼我們需要動態確定表格地址。 sys_call_table最有可能在內核文本部分的開頭。
通過以下步驟來計算的sys_call_table的
基地址查找其旁邊放置成彼此在 表(從源代碼)兩個系統調用。例如:sys_read,sys_open。
獲取這些sys調用的地址。
從文本部分的開頭搜索這兩個地址。
(通過文字部分的計算開始,objdump的-H的vmlinux | grep的 「的.text」)
當你發現它,計算的sys_call_table的基礎上,根據自己的 相對偏移。
相關問題
- 1. 內核模塊監控系統調用?
- 2. Linux內核模塊(內核3.5)中的系統調用攔截
- 3. 使用內核模塊鎖定系統調用
- 4. 使用內核模塊(LKM)添加系統調用
- 5. 如何在內核模塊中安裝系統調用
- 6. 錯誤使用自定義的系統編譯Linux內核模塊調用
- 7. 可加載的內核模塊編程和系統調用攔截
- 8. 如何編寫Linux內核模塊?
- 9. 爲什麼系統調用需要切換到內核模式?
- 10. 如何爲我自己編寫的內核模塊禁用rmmod?
- 11. 你會爲內核模塊寫什麼?
- 12. MINIX 2 - 系統調用內核
- 13. 冗餘的Linux內核系統調用
- 14. Linux內核中的系統調用
- 15. Linux內核AIO,開放系統調用
- 16. 更改linux內核系統調用號
- 17. Android內核,WiFi掃描系統調用
- 18. 寫入到內核模塊中的文件 - 有fd,有指向寫sys系統調用的指針
- 19. Linux內核模塊編程
- 20. !編譯內核模塊
- 21. FTDI編譯內核模塊
- 22. Linux內核模塊編譯
- 23. Android內核模塊編程
- 24. Linux內核模塊編譯
- 25. Linux內核模塊調試
- 26. 準備計算機學習系統調用和Linux內核模塊
- 27. 在Linux內核3.x模塊中如何計算與Kprobe的系統調用?
- 28. 系統調用kill內核內核進程
- 29. 爲不同的內核編譯內核模塊
- 30. 使用Android系統爲特殊的ARM設備構建Linux內核模塊