【发布时间】:2017-04-26 12:31:53
【问题描述】:
如果我要编写一个汇编语言程序,我是否可以破坏操作系统的安全机制——访问其他进程的地址空间、访问内核地址空间等?
编辑:
如果我编写了一个汇编语言程序,它由操作系统提供的加载程序加载到内存中,操作系统在尝试访问受保护的内存地址空间时如何拦截我的程序?我的假设是这种保护内置于操作系统提供的系统调用和库中,如果您不使用这些系统调用和库,则可以破坏操作系统策略。
【问题讨论】:
-
当然不是。安全不是知识问题。 CPU 只处理机器代码,与生成它的语言无关。
-
RE 您的编辑:否。保护内置于操作系统本身。您的汇编语言程序将作为标准进程运行,并受到与任何其他进程相同的安全限制。
-
操作系统停止它。它的工作方式与用任何其他语言编写的程序完全相同。所有现代操作系统都实现了受保护的内存,并在自己的进程中运行每个程序,这样一个进程就不允许干扰其他进程(或系统本身)的内存。这实际上与汇编语言无关,而与操作系统的设计有关。
-
内存保护和虚拟化通常由现代硬件(CPU)提供。操作系统开发人员使用这些功能在自己的进程空间中对代码进行沙箱处理。操作系统将确定对代码施加的限制。无论代码是手工编写的汇编代码还是高级语言编译的代码,所有执行的代码都会有相同的限制。
-
@BharatKhatri,兄弟,如果您能获得 Tom Shanley 的《保护模式软件架构》一书的副本,我想这对您很有帮助。这本书很好地介绍了“为什么”需要“保护模式”CPU 架构来为现代操作系统提供庇护,以及“如何”使用这些 CPU 功能实现某些操作系统部件。当然,缺少一些小细节(如果没有,我不会在这里寻找答案),但它可以为您提供大量信息。