如何使用sysenter处理与SystemⅤ库链接的64位用户程序?

时间:2016-09-10 03:07:43

标签: linux security assembly x86-64 system-calls

是否可以在Linux上使用64位程序中的sysenter?或者是否无法使sysenter使用SystemⅤ调用约定而不会让其他动态链接库崩溃(我知道32位方式不起作用但我只是想知道是否可以解决这个问题,如int 0x80

关于在32位中使用sysenter的文档很少,所以我找不到64位的任何内容 我知道这不推荐,但它是我可以用来触发系统调用的唯一操作码,作为bug赏金狩猎漏洞的一部分,程序需要使用只能从正常执行触发的特殊函数退出。

1 个答案:

答案 0 :(得分:1)

可以使用它们,但它们使用内核的32位入口点(请查看代码以获取更多信息)。

此入口点的实际位置(和代码)取决于您的内核版本。 对于4.2及更高版本,它是entry_SYSENTER_32。 对于4.1及更早版本,它是ia32_sysenter_target

最后,SYSRET在用户空间不可用(它只能从环0执行)。查看英特尔手册中的说明书。