我已給出「將系統調用編寫爲內核模塊」的分配。現在,據我在互聯網上的閱讀,我可以理解,將系統調用作爲內核模塊並不是完全可能的,但是可以攔截現有的系統調用。這是做到這一點的正確方法嗎? 我在這個博客上發現了一個這樣的例子: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. 如何在內核模塊中安裝系統調用
- 3. 錯誤使用自定義的系統編譯Linux內核模塊調用
- 4. 爲什麼系統調用需要切換到內核模式?
- 5. 如何爲我自己編寫的內核模塊禁用rmmod?
- 6. 你會爲內核模塊寫什麼?
- 7. 冗餘的Linux內核系統調用
- 8. Linux內核模塊編程
- 9. !編譯內核模塊
- 10. Linux內核模塊編譯
- 11. Android內核模塊編程
- 12. Linux內核模塊編譯
- 13. Linux內核模塊調試
- 14. 準備計算機學習系統調用和Linux內核模塊
- 15. 系統調用kill內核內核進程
- 16. 編寫一個系統調用linux
- 17. 在編寫Linux內核模塊時獲取用戶進程pid
- 18. 在內核模塊中獲取文件系統掛載點
- 19. ASP.NET核心內置DI系統中的DI模塊
- 20. 的Netfilter的內核模塊會導致我的系統崩潰
- 21. 操作系統如何引入C語言來編寫內核
- 22. 將系統調用添加到linux內核3.8.8
- 23. 內核模塊
- 24. 使用gcc與內核頭文件編譯Linux內核模塊
- 25. 從Linux內核模塊寫入debugfs
- 26. 爲用戶帳戶編寫系統
- 27. 在4.x.x內核中找到64位內存的系統調用表內核
- 28. 模塊內的相對文件系統寫入路徑
- 29. 在框架內創建模塊系統
- 30. 內核掛tty子系統