Memory management 操作系统如何防止程序集级代码恶意访问内存?

Memory management 操作系统如何防止程序集级代码恶意访问内存?,memory-management,operating-system,system-calls,kernel-mode,memory-safety,Memory Management,Operating System,System Calls,Kernel Mode,Memory Safety,我知道操作系统为保护程序不访问其他程序内存而提供的系统调用。但这只有在我使用了操作系统提供的系统调用库时才有帮助。如果我自己编写一个汇编代码,为内核模式设置CPU位并执行特权指令(比如修改内存中OS的程序段),会怎么样。操作系统可以防止这种情况吗? 另外,出于好奇。如果能提供任何好的博客或书籍参考,那将很有帮助,因为我希望尽可能详细地研究操作系统。处理器通过(1)要求您处于提升模式(例如,内核)来再次保护此类恶意破坏;(2)限制对内核模式的访问 为了从用户模式进入内核模式,必须有中断(此处不适用

我知道操作系统为保护程序不访问其他程序内存而提供的系统调用。但这只有在我使用了操作系统提供的系统调用库时才有帮助。如果我自己编写一个汇编代码,为内核模式设置CPU位并执行特权指令(比如修改内存中OS的程序段),会怎么样。操作系统可以防止这种情况吗?
另外,出于好奇。如果能提供任何好的博客或书籍参考,那将很有帮助,因为我希望尽可能详细地研究操作系统。

处理器通过(1)要求您处于提升模式(例如,内核)来再次保护此类恶意破坏;(2)限制对内核模式的访问

为了从用户模式进入内核模式,必须有中断(此处不适用)或异常。通常这两种处理器的处理方式都是一样的,但有些奇怪的处理器(有人说英特尔吗?)的处理方式有点不同

操作系统异常和中断处理程序必须限制用户模式程序的功能

如果我自己编写一个汇编代码,为内核模式设置CPU位并执行特权指令,该怎么办

您不能仅在处理器状态寄存器中设置内核模式位,以进入内核模式

操作系统可以防止这种情况吗

CPU对此进行保护

如果能提供任何好的博客或书籍参考,那将是很有帮助的,因为我想尽可能详细地研究操作系统


VAX/VMS Systems Internals这本书很旧,但很便宜,它展示了一个真正的操作系统是如何实现的

这个博客清楚地解释了我的困惑。
即使用户程序可以切换到内核模式,但它们必须通过中断指令(在x86情况下为int)来完成,对于该中断,中断处理程序由操作系统编写。(可能是在启动时处于内核模式时)。因此,通过这种方式,所有私有指令只能由操作系统代码执行。

操作系统将标准进程置于这样一种模式,即此类指令将导致异常。内存也受到保护,包括禁用从数据区域运行代码的功能。然而,调试器类型的进程可以覆盖所有这些。操作系统如何设置这种指令会导致异常的模式?一旦操作系统将CPU移交给进程,那么该进程就可以做任何事情。因此,进程不能为特权模式设置CPU标志并执行任何指令吗?这取决于处理器,但一般来说,程序是在限制模式下运行的,这会阻止它们脱离限制模式。因此,如果CPU对程序设置内核模式位进行保护,它如何只让操作系统设置内核模式?它如何区分操作系统是要设置内核模式还是标准程序。l?@RishiSharma:OS首先在系统上运行;它以较高的权限设置所有内容,然后要求处理器(核心)在用户环(较低权限)中执行程序或用户程序。当操作系统继续运行我们所说的保护模式时。