SYSENTER和SYSEXIT

SysEnter和SysExit指令是结伴的,但是不是成对的。因为SYSENTER并不会保存任何供SYSEXIT在返回时使用的状态信息。这些指令的目标指令和栈指针不是通过指令操作数在确定的,而是通过几个MSRs(Model-Specific Registers)和几个通用寄存器确定的。

SYSENTER通过以下来源获取ring0的目标指令和栈指针:

l  目标代码段(CS)——从SYSENTER_CS_MSR中读取

l  目标指令(EIP)——从SYSENTER_EIP_MSR中读取

l  栈段(SS)——从SYSENTER_CS_MSR中读取

l  栈指针(ESP)——从SYSENTER_ESP_MSR中读取

 

 

SYSEXIT 通过以下指令获取ring3的目标指令和栈指针

l  目标代码段(CS)——从SYSENTER_CS_MSR中的值加上16(0x10)

l  目标指令(EIP)——从EDX中读取

l  栈段(SS)——从SYSENTER_CS_MSR中的值加上24(0x18)

l  栈指针(ESP)——从ECX中读取

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值