我的问题很简单。
我遇到了这个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。但这对我没什么帮助......
有人可以告诉我吗? 谢谢
答案 0 :(得分:1)
syscall用于在VM86模式下执行代码。此模式允许您运行旧的"实模式"受保护模式OS内的32位代码(如某些BIOS中的存在)。
参见维基百科上的文章:https://en.wikipedia.org/wiki/Virtual_8086_mode
您找到的设置意味着您需要CAP_SYS_RAWIO来调用系统调用。
我认为X11特别使用它来调用BIOS方法来切换视频模式。有两个系统调用,具有旧后缀的系统调用提供较少的操作,但保留了二进制(ABI)兼容性。