[英]Linux Block System Calls
我正在嘗試在 linux 2.6.32.60 x86 內核中實現功能,該功能允許我根據我在任務結構中添加的字段阻止所有系統調用。 這基本上是以下形式:
task_struct ts;
if(ts-> added_field == 0)
//do system call normally
else
//don't do system call
我想知道我是否應該直接在 entry_32.S 中執行此操作,或者我是否能夠修改在其他地方調用 syscall 表的方式。 直接修改 entry_32.S 的問題是我不知道我是否可以訪問正在調用的任務結構。
謝謝您的幫助!
如果我要這樣做,我會掛接到__kernel_vsyscall()
並且如果任務結構按照上面的邏輯如此指示就停止調度。
具體來說, arch/i386/kernel/vsyscall-sysenter.S
在每個進程的地址空間之間共享,並且是所有系統調用通過的入口點。 這是在調度實際系統調用之前的位置,在我看來,這是放置鈎子的地方。 您位於進程的地址空間中,因此您應該可以訪問任務結構的mm->current
。 (另見arch/sh/kernel/vsyscall/vsyscall.c
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.