Jzz2004
驱动牛犊
驱动牛犊
  • 注册日期2005-02-07
  • 最后登录2005-05-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2045回复:0

一段有关Ring3_to_Ring0代码的问题

楼主#
更多 发布于:2005-02-23 21:58
完整代码:
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?

晚辈这里先谢了。
游客

返回顶部