sys_vm86old系统调用有什么作用?

时间:2015-08-29 11:04:45

标签: system-calls

我的问题很简单。

我遇到了这个sys_vm86old系统调用(当进行逆向工程时),我试图了解它的作用。

我发现有两个来源可以给我一些东西,但我仍然不确定我完全理解;这些来源是 Source Code和此page给了我这一段(但它在链接上更直接可读):

  

配置GRKERNSEC_VM86
  bool“限制VM86模式”
    取决于X86_32

     

帮助:
      如果你在这里说Y,那么只有带有CAP_SYS_RAWIO的进程才能       在32位x86处理器上使用特殊的执行模式       虚8086(VM86)模式。 XFree86可能需要vm86模式       视频卡,仍然可以使用此选项。目的       该选项是为了防止利用仿真错误       虚拟化vm86模式就像2009年在VMWare中发现的一样。       几乎所有用户都应该能够启用此选项。

根据我的理解,它将确保调用进程启用了cap_sys_rawio。但这对我没什么帮助......

有人可以告诉我吗? 谢谢

1 个答案:

答案 0 :(得分:1)

syscall用于在VM86模式下执行代码。此模式允许您运行旧的"实模式"受保护模式OS内的32位代码(如某些BIOS中的存在)。

参见维基百科上的文章:https://en.wikipedia.org/wiki/Virtual_8086_mode

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

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