阅读:2045回复:0
一段有关Ring3_to_Ring0代码的问题
完整代码:
http://www.fineacer.com/Article_Show.asp?ArticleID=2189 在其中有关如何Ring3_to_Ring0的问题的回答的A3部分(under WinNT/Win2k )里,先在GDT里设置一个ring3级的调用门,通过 call fword [callgt] 转到 ring0;在ring0里执行Ring0Proc1,在IDT里设置一个中断门,中断门里的偏移指向MyIntCode,在MyIntCode里通过KeI386AllocateGdtSelectors, KeI386SetGdtSelector, 在GDT里设置一个调用门。 我看了以后有几个地方不太清楚: 1)中断门里的偏移指向的MyIntCode里,一开始便对eax进行判断,从后面来看eax里好象是调用门的偏移地址,但我不明白这eax是如何得到这偏移地址的;还有,在代码里没有显式地通过中断来启动新装的中断门,MyIntCode是如何得到调用的? 2)0008h应该是指GDT里的第一个段描述符(除去空描述符)吧,为什么中断门,调用门的Selector都是0008h? 晚辈这里先谢了。 |
|