我正在尝试用C ++创建一个Linux软件,它需要在x86和x86-64处理器的受保护环境中运行代码。
我的问题是找到一种在受保护环境中运行代码的方法,首先,仅在x86-64上(它是处理器工作方式的技术部分),我看到了本地描述符表,但我发现它不再有用在x86-64上。我也听说过英特尔VT技术,但文档似乎很复杂。
您是否了解如何在进程内的linux和x86-64上的受保护环境中运行代码?
我的目标是在linux进程中创建类似OS的东西。
就像Windows或Linux一样,我希望在我的受保护环境中运行的程序不能访问我的部分软件,并在需要时进行系统调用。我相信我找到了一种方法,我将其解释如下。
答案 0 :(得分:0)
我找到了一种方法来做我想要的事情:
每次我的程序将从主要部分切换到内部程序时,它将使用mprotect(Linux上的Glibc函数)来更改访问该进程大部分内存的权限。
每次程序内部的程序都会对我的程序进行系统调用,它将更改回访问内存的权限。
你可能认为它存在安全问题,因为程序里面可以运行任何类型的代码并访问系统调用linux,因此可以访问不允许的东西。但我相信我可以使用一个棘手的方法,禁止内部代码启动任何类型的操作码。