当前位置: 代码迷 >> 汇编语言 >> 【虎彡】中止门, 陷阱门,任务门还不太透彻
  详细解决方案

【虎彡】中止门, 陷阱门,任务门还不太透彻

热度:1590   发布时间:2013-02-26 00:00:00.0
【虎彡】中断门, 陷阱门,任务门还不太透彻
进入中断门的条件为CPL>=处理程序的DPL对么?
需要检查CPL<=中断DPL吗?
进入中断后,CPL=中断处理程序DPL(还是中断门的DPL)?
有一致和非一致代码的区别吗?


进入陷阱门的条件为?

若CALL或JMP指令通过TSS描述符去执行一个任务的条件为?


普通跳转、通过任务门、调用门的条件以及CPL的变化已经弄清楚了 谢谢!
------解决方案--------------------------------------------------------
陷阱门才需要检查CPL<=陷阱门DPL。IDT由于不能存放代码段描述符,所以根本不存在有一致和非一致代码的问题。
CPL>=处理程序的DPL
这个不管是中断门还是陷阱门都需要检查的,陷阱门多一个检查就是CPL<=陷阱门DPL。
因为陷阱门其实是由指令主动引起的,就如果主动调用一个程序,所以要检查CPL<=陷阱门DPL。
不管你引用什么描述符,只要有可能引起CPL改变的都要求EPL<=指令所引用的描述符的DPL的。
------解决方案--------------------------------------------------------
其实对于这些特权比较你只要站在操作系统的角度想一想就知道了,如果不那样会不会有什么漏洞。
------解决方案--------------------------------------------------------
软中断指令中根本就没有选择子,自然没有RPL,也就不存在检查RPL,JMP指令只能用于同CPL之间的跳转。(不包括任务切换)
其它总结没什么问题。
------解决方案--------------------------------------------------------
不管硬中断还是软中断都是通过IDT索引出门描述符的。硬中断没有相应引起中断的指令更不可能存在指令中的选择子了。
如果Call或Jmp指令的选择子就是一个TSS的描述符那么目标任务的DPL就是这个DPL了。
你说那句话应该是Call或Jmp指令通过任务门去执行一个任务,必须满足CPL<=DPL,RPL<=DPL此DPL是任务门描述符的DPL,而目标任务的DPL不参与检查。
  相关解决方案