爲什麼從用戶空間調用內核空間的回調函數被認爲是「壞」,而在用戶空間中調用用戶空間的回調函數呢?爲什麼在內核模式下執行回調函數不好?
4
A
回答
3
允許用戶在內核模式下執行代碼將是一個巨大的安全風險。也就是說,如果用戶空間程序在內核模式下執行,那麼就不是安全性:遊戲完全丟失,用戶可以完全訪問所有人和所有內容。
請注意,如果您在內核模式下執行,虛擬內存查找不再受特權級別的保護。在x86中,當處於內核模式時,您的權限級別爲0;這意味着你可以訪問任何物理內存。所以,如果一個進程的回調函數在內核空間中執行,那麼它可以在機器上做任何事情。
想抹去每個人的頁面表嗎? K.想改爲查看這些頁表中的內容?你說對了。想要清零內核內存並導致整個系統崩潰?洛爾斯好主意。想要破解機器上的另一個進程,以便記錄其I/O流量?似乎是合法的。
不要讓用戶在內核空間中運行代碼。
0
有些系統支持這種回調。例如: -
http://h41379.www4.hpe.com/doc/732final/4527/4527pro_001.html#index_x_190
在這種情況下,你的進程必須有適當的權限在內核模式下執行。
允許代碼在內核模式下執行會導致系統崩潰和安全漏洞。
相關問題
- 1. 爲什麼NtUserInternalGetWindowText在內核模式下總是返回0
- 2. 爲什麼下一行在函數返回值之前執行?
- 3. 用戶模式與內核模式的回調函數
- 4. 爲什麼不執行$ .getJSON的回調函數?
- 5. 爲什麼回調函數中的值不同 - 不好?
- 6. 爲什麼在內核模式下調用ZwCreateKey似乎規避了Windows安全?
- 7. 爲什麼getJSON函數的回調沒有執行?
- 8. 爲什麼不在內核中執行復制操作?
- 9. 從內核模式執行用戶模式可執行文件
- 10. 爲什麼內核使用copy_to_user()函數?
- 11. 爲什麼在打印任何內容之前,執行printf()函數,調用sleep(),爲什麼執行?
- 12. 爲什麼硒代碼只能在調試模式下成功執行,但在運行模式下失敗?
- 13. 什麼執行。在執行模式
- 14. 在vim函數內執行正常模式下的命令
- 15. 爲什麼系統調用需要切換到內核模式?
- 16. 爲什麼GCC在嚴格模式下不使用內建函數?
- 17. 爲什麼沒有執行回調? - Smalltalk
- 18. 爲什麼IsClientScriptBlockRegistered在調試模式下總是返回false?
- 19. LdrLoadDll是否有內核模式回調?
- 20. 爲什麼回調函數被調用?
- 21. 爲什麼在Javascript模塊模式中使用自執行的匿名函數?
- 22. 在CUDA內核函數中,爲什麼tex3D不能返回任何值?
- 23. 爲什麼進程最初以內核模式運行
- 24. 在內核模式下運行的Get_user返回錯誤
- 25. 爲什麼函數式編程很好?
- 26. C程序模仿gdb調用函數在覈心上執行
- 27. 爲什麼angular在回調函數中返回一個函數?
- 28. Javascript回調函數執行
- 29. 模板函數+函子參數,爲什麼函子不內聯?
- 30. 爲什麼在javascript中執行模塊模式時執行自我執行
[用戶模式與內核模式中的回調函數]可能的重複(http://stackoverflow.com/questions/36266834/callback-function-in-user-mode-vs-kernel-mode) –
答案前面的問題含糊不清。 – Nadeemm
你能詳細說說你的意思嗎?你是指從用戶空間調用內核空間的回調函數,還是從用戶空間調用用戶空間的回調函數?或者你的意思是從內核空間調用內核空間的回調函數,或者是從用戶空間調用用戶空間的回調函數? – glauxosdever