system-calls - sys_vm86old 系统调用有什么作用?

标签 system-calls

我的问题很简单。

我遇到了这个 sys_vm86old 系统调用(在逆向工程时),我想了解它的作用。

我找到了两个可以给我一些东西的资源,但我仍然不确定我是否完全理解;这些来源是 Source Code还有这个page这给了我这一段(但直接在链接上更具可读性):

config GRKERNSEC_VM86
bool "Restrict VM86 mode"
depends on X86_32

help:
If you say Y here, only processes with CAP_SYS_RAWIO will be able to make use of a special execution mode on 32bit x86 processors called Virtual 8086 (VM86) mode. XFree86 may need vm86 mode for certain video cards and will still work with this option enabled. The purpose of the option is to prevent exploitation of emulation errors in virtualization of vm86 mode like the one discovered in VMWare in 2009. Nearly all users should be able to enable this option.

据我了解,这将确保调用进程启用了 cap_sys_rawio。但这对我帮助不大...

谁能告诉我吗?
谢谢

最佳答案

系统调用用于在 VM86 模式下执行代码。此模式允许您在 protected 模式操作系统中运行旧的“实模式”32 位代码(如某些 BIOS 中存在的代码)。

例如,请参阅关于它的维基百科文章:https://en.wikipedia.org/wiki/Virtual_8086_mode

您找到的设置意味着您需要 CAP_SYS_RAWIO 来调用系统调用。

我认为 X11 特别是使用它来调用 BIOS 方法来切换视频模式。有两个系统调用,一个带有旧后缀的系统调用提供较少的操作,但为了二进制 (ABI) 兼容性而保留。

关于system-calls - sys_vm86old 系统调用有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32285312/

相关文章:

linux - x86_64 汇编 Linux 系统调用混淆

c - C中printk的atomic_long_t的打印格式是什么

python - 如何以编程方式确定 "write"系统调用在特定文件上是否是原子的?

assembly - "int 21h"在汇编中是什么意思?

linux - 是否有 Linux 系统调用可以让我在另一个进程的上下文中进行系统调用?

linux - 在运行时获取 Linux 内核函数的结束地址

linux - 在我的代码末尾进行系统调用后出现程序集段错误

java - 如何从 Java 调用 C++ 功能

system - 什么是阻止用户进程独立使用trap指令?

c - macOS 上的 gettimeofday() 是否使用系统调用?