系统调用
文章平均质量分 65
柠檬的泪是酸的@
能让自己登高的,永远不是别人的肩膀
展开
-
sysenter & int 2e
sysenter进入0环直接从MSR寄存器获取寄存器的值中断门进入0环需要查内存(TSS\IDT)获取寄存器的值。原创 2023-05-22 16:35:08 · 148 阅读 · 0 评论 -
SystemServiceTable
SystemServiceTable,即系统服务表,它不是SSDT表由4部分组成,ServiceTable指向的是函数地址数组,每个成员四个字节;Count表示调用次数,没啥意义;ServiceLimit表示这张表有几个函数;ArgumentTable指向对应函数有几个字节参数,每个成员一个字节从图中可以看出,Windows提供了两张表:上面的表是用来处理一般内核函数的,下面这张表是用来处理与GUI相关的内核函数。原创 2023-05-06 10:57:34 · 199 阅读 · 0 评论 -
3环层面调用
中断门进0环,需要的CS、EIP在IDT表中,需要查内存(SS与ESP由TSS提供),而CPU如果支持sysenter指令时,操作系统会提前将CS/SS/ESP/EIP的值存储在MSR寄存器中,sysenter指令执行时,CPU会将MSR寄存器中的值直接写入相关寄存器,没有读内存的过程,所以叫快速调用,但本质是一样的。其实,快速调用并不是一直存在的,在比较古老的CPU是不支持快速调用的。虽然它们指向的是同一个物理页,但在User层是只读的,在Kernnel层是可写的,通过页的限制保证在3环的安全性。原创 2023-05-05 10:37:28 · 114 阅读 · 0 评论