linux - 一种在 protected 环境 (x86-64) 中运行汇编代码的方法

标签 linux x86-64 virtualization processor user-mode-linux

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

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

您是否知道在进程内的 Linux 和 x86-64 protected 环境中运行代码的方法?

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

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

最佳答案

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

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

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

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

关于linux - 一种在 protected 环境 (x86-64) 中运行汇编代码的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49276651/

相关文章:

linux - 什么会导致 SIGTERM 不传播到子进程?

assembly - 'REX' 在 x86-64 REX 前缀中代表什么?

x86-64 - x86_64,i386,ia64和其他此类术语代表什么?

c++ - clang 的 `-Ofast` 选项在实际中有什么作用,特别是对于与 gcc 的任何差异?

c# - WinRT - UI 虚拟化加载图像异步阻塞 UI 线程

linux - 基于 block 的存储

linux - 排序范围 Linux

linux - 条件 Awk HashMap 匹配查找

asp.net - 使用虚拟化进行 Web 开发的优势

virtual-machine - 陷阱和模拟虚拟化是什么意思?