我想添加一個新的系統調用通過LKM,但我不知道如何做到這一點。也就是說,我知道如果我想添加一個全新的系統調用,我可以查看sys_call_table並找到一個sys_ni_syscall
並將其替換,但我很好奇是否有可能實際上將添加到sys_call_table
。我意識到它可能是而不是可能,因爲它是一個固定大小的數組,但我想知道是否有其他聰明的方法來添加系統調用而不覆蓋未使用的系統調用號碼。是否可以通過LKM添加系統調用?
9
A
回答
1
檢查「Linux內核模塊編程指南」(http://www.tldp.org/LDP/lkmpg/2.6/html/index.html)的Linux文檔項目網站。具體來說,看看這裏的系統調用:http://www.tldp.org/LDP/lkmpg/2.6/html/x978.html。至少應該給你一個開始。
+4
請仔細閱讀,雖然看起來像sys_call_table是不再在2.6內核中導出。請參閱syscall.c中的註釋 – FreeMemory 2009-01-21 14:25:15
3
下面是一個例子
linux system calls
編輯:
上面的例子顯示HOWTO實現系統調用,就實現一個從一個可加載的模塊; AFAIK,這是不可能的,除非你在哪裏覆蓋現有的,因爲數組的大小是#define。
請記住,還需要更改用戶空間,至少如果您希望能夠實際使用新的系統調用。
1
這是一個老問題,但我想提出我的解決方案。實施「類似系統調用」環境的最簡單方法是依靠假設備。 特別是,您可以創建一個新的設備驅動程序,它實際上不會驅動任何東西。然而,寫上它可能會導致已安裝的模塊執行所需的操作。 此外,如果您想要提供多項服務,則可以將它們映射到ioctl
操作。
相關問題
- 1. Android LKM攔截系統調用
- 2. 是否可以通過Theos Tweak攔截系統調用?被拘留的版本
- 3. OS X系統調用是否可以覆蓋或插入系統範圍內?
- 4. 我可以從模塊添加一個系統調用嗎?
- 5. Android:是否可以觀察系統調用?
- 6. 是否可以在iOS上進行系統調用?
- 7. 當我尋找添加系統調用時,我添加系統調用linux-2.6.31
- 8. Mutex是否會調用系統調用?
- 9. 命令通過終端,但不是通過python系統調用
- 10. 是否可以使用django從系統目錄加載文件?
- 11. 我們是否可以將系統圖標添加到flex應用程序
- 12. 是否可以通過編程添加工作流程修改?
- 13. 是否可以實現通過EF添加插入行的ID
- 14. 是否可以通過編程添加Crystal Reports的子報表?
- 15. 是否可以通過DynamicProxy將屬性添加到類型?
- 16. 製作系統,可以通過調試編寫代碼
- 17. 是否可以通過iPhone API下載使用統計信息?
- 18. 是否可以通過iPhone API下載使用統計信息?
- 19. 是否可以添加類?
- 20. 如何通過庫調用C編譯器而不是通過系統調用?
- 21. 是否可以從非Linux系統遠程調試linux代碼?
- 22. Linux:通過ptrace()執行系統調用()
- 23. 是否可以通過Java中的NTP客戶端同步系統時鐘?
- 24. 是否可以通過Python從系統托盤顯示氣球提示?
- 25. 是否可以在Windows的NumericUpDown按鈕控件中添加系統時間?
- 26. 是否可以調用存儲過程?
- 27. 是否可以通過使用datagrid列來調用該函數?
- 28. 是否可以通過引用從python調用C函數?
- 29. 是否可以通過API調用分發iOS應用程序
- 30. 是否可以通過網絡上的應用程序(代碼)通過網絡啓動「關閉」系統?
[使用LKM實現Linux系統調用]可能的副本(https://stackoverflow.com/questions/12623066/implementing-linux-system-call-using-lkm) – 2018-01-29 15:26:15