南北汉子 发表于 2011-8-8 08:28:46

Sysenter hook基础知识

在 Intel 的软件开发者手册第二、三卷(Vol.2B,Vol.3)中,4.8.7 节是关于 sysenter/sysexit 指令的详细描述。手册中说明

,sysenter 指令可用于特权级 3 的用户代码调用特权级 0 的系统内核代码,而 SYSEXIT 指令则用于特权级 0 的系统代码返回用户空间中。sysenter 指令可以在 3,2,1 这三个特权级别调用(Linux 中只用到了特权级 3),而 SYSEXIT 指令只能从特权级 0 调用。执行 sysenter 指令的系统必须满足两个条件:1.目标 Ring 0 代码段必须是平坦模式(Flat Mode)的 4GB 的可读可执行的非一致代码段。2.目标 RING0 堆栈段必须是平坦模式(Flat Mode)的 4GB 的可读可写向上扩展的栈段。在 Intel 的手册中,还提到了 sysenter/sysexit 和 int n/iret 指令的一个区别,那就是 sysenter/sysexit 指令并不成对,sysenter 指令并不会把 SYSEXIT 所需的返回地址压栈,sysexit 返回的地址并不一定是 sysenter 指令的下一个指令地址。调用sysenter/sysexit 指令地址的跳转是通过设置一组特殊寄存器实现的。这些寄存器包括:
**** Hidden Message *****

wwhlf 发表于 2011-8-8 13:47:09

看下咯 哇咔咔

wqs3568 发表于 2012-3-25 06:33:32

科普一下楼主的大作

seny11 发表于 2014-1-10 16:49:03

111111111111

qq412158094 发表于 2019-3-28 16:27:48

支持楼主,支持看流星社区,以后我会经常来!

qq412158094 发表于 2019-3-28 18:00:09

支持楼主,支持看流星社区,以后我会经常来!

heiqishi 发表于 2019-7-20 15:18:12

支持楼主,支持看流星社区,以后我会经常来!
页: [1]
查看完整版本: Sysenter hook基础知识