OS 如何防止来自汇编级代码的恶意内存访问?
How OS protects against malicious memory access from assembly level code?
我知道 OS 提供的系统调用来保护程序不访问其他程序的内存。但这只有在我使用了 OS 提供的系统调用库时才有帮助。如果我自己编写一个汇编代码,为内核模式设置 CPU 位并执行特权指令(假设修改内存中的 OS' 程序段)怎么办? OS 可以防止这种情况发生吗?
P.S。出于好奇的问题。如果可以提供任何好的博客或书籍参考资料,那将很有帮助,因为我想尽可能详细地研究OS。
处理器通过以下方式再次保护此类恶意恶作剧:(1) 要求您处于提升模式(对于我们此处的示例,KERNEL); (2) 限制对内核模式的访问。
为了从用户模式进入内核模式,必须有中断(此处不适用)或异常。通常两者的处理方式相同,但有一些奇怪的处理器(有人说英特尔吗?)做事有点不同
操作系统异常和中断处理程序必须限制用户模式程序可以执行的操作。
What if I write a assembly code myself that sets CPU bit for kernel mode and executes a privileged instruction
你不能只设置处理器状态寄存器中的内核模式位来进入内核模式。
Can OS protect against that ?
CPU 可以防止这种情况发生。
If any good blog or book reference can be provided, that would be helpful as I want to study OS in as much detail as possible.
VAX/VMS Systems Internals 这本书很旧但是很便宜并且展示了真正的 OS 是如何实现的。
这个博客清楚地解释了我的困惑是什么。
http://minnie.tuhs.org/CompArch/Lectures/week05.html
尽管用户程序可以切换到内核模式,但它们必须通过中断指令(在 x86 的情况下为 int)来完成,并且对于此中断,中断处理程序由 OS 编写。 (可能是在启动时处于内核模式时)。所以这样所有特权指令只能由OS代码执行。
我知道 OS 提供的系统调用来保护程序不访问其他程序的内存。但这只有在我使用了 OS 提供的系统调用库时才有帮助。如果我自己编写一个汇编代码,为内核模式设置 CPU 位并执行特权指令(假设修改内存中的 OS' 程序段)怎么办? OS 可以防止这种情况发生吗? P.S。出于好奇的问题。如果可以提供任何好的博客或书籍参考资料,那将很有帮助,因为我想尽可能详细地研究OS。
处理器通过以下方式再次保护此类恶意恶作剧:(1) 要求您处于提升模式(对于我们此处的示例,KERNEL); (2) 限制对内核模式的访问。
为了从用户模式进入内核模式,必须有中断(此处不适用)或异常。通常两者的处理方式相同,但有一些奇怪的处理器(有人说英特尔吗?)做事有点不同
操作系统异常和中断处理程序必须限制用户模式程序可以执行的操作。
What if I write a assembly code myself that sets CPU bit for kernel mode and executes a privileged instruction
你不能只设置处理器状态寄存器中的内核模式位来进入内核模式。
Can OS protect against that ?
CPU 可以防止这种情况发生。
If any good blog or book reference can be provided, that would be helpful as I want to study OS in as much detail as possible.
VAX/VMS Systems Internals 这本书很旧但是很便宜并且展示了真正的 OS 是如何实现的。
这个博客清楚地解释了我的困惑是什么。 http://minnie.tuhs.org/CompArch/Lectures/week05.html 尽管用户程序可以切换到内核模式,但它们必须通过中断指令(在 x86 的情况下为 int)来完成,并且对于此中断,中断处理程序由 OS 编写。 (可能是在启动时处于内核模式时)。所以这样所有特权指令只能由OS代码执行。