0

我正在尝试用 C++ 创建一个 Linux 软件,该软件需要在 x86 和 x86-64 处理器上的受保护环境中运行代码。

我的问题是找到一种在受保护的环境中运行代码的方法,首先,仅在 x86-64 上(它是处理器工作方式的技术部分),我看到了本地描述符表,但我发现它不再适用于 x86- 64. 我也听说过 Intel VT 技术,但是文档看起来很复杂。

您是否知道在进程内的 linux 和 x86-64 上的受保护环境中运行代码的方法?

我的目标是在 linux 进程中创建类似于操作系统的东西。

像 Windows 或 Linux 一样,我希望在受保护的环境中运行的程序不会访问我的软件的一部分,并在需要时进行系统调用。我相信我已经找到了一种方法,我在下面解释它。

4

1 回答 1

0

我找到了一种方法来做我想做的事:

每次我的程序从主要部分切换到里面的程序时,它都会使用 mprotect(Linux 上 Glibc 的一个功能)来更改对进程大部分内存的访问权限。

每次内部程序对我的程序进行系统调用时,它都会改回访问内存的权限。

您可能认为它仍然是安全问题,因为里面的程序可以运行任何类型的代码并访问对 linux 的系统调用,因此可以访问不允许的东西。但我相信我可以使用一个技巧来禁止里面的代码启动任何类型的操作码。

于 2018-03-21T12:49:54.573 回答