相关文章  
  • 变Win 2003为工作站(下)
  • 如何在Win 2003中重置Internet协议
  • 在Win 2003配置DNS的Internet访问
  • 设置Win 2003的本地策略应用
  • Win 2000系统引导过程详解(上)
  • Win 2000系统引导过程详解(中)
  • Win 2000系统引导过程详解(下)
  • 《优化xp大全》之系统优化设置
  • 《优化xp大全》之硬件优化
  • 《优化xp大全》之其他
  •   推荐  
      科普之友首页   专利     科普      动物      植物        天文   考古   前沿科技
     您现在的位置在:  首页 >>文献 >>培训

    解析Windows2000的IDT扩展机制8

    到一个全局变量OldISR中,以备我们在执行中断处理或恢复IDT时使用。这样新的IDT中对应中断号的执行代码偏移量就指向了我们自己的处理代码了。在我们的处理代码NewISR中,注意先要保存一些线程环境,在处理完我们额外添加的执行程序(Monitor,监视注册表相关的16个系统服务调用)后,恢复现场并执行中断门以前指向的程序代码。这样,对外就看不出我们对中断门做了什么额外的处理,感觉和以前没什么两样!如果我们只是处理了我们添加的代码而没有继续执行中断门对应的以前的程序代码,那么系统必将混乱甚至崩溃!同样在我们卸载我们的软件中断钩子时,就是进行了一个逆向工作。先获取IDT的基地址,然后将保存在全局变量中的旧的执行代码地址偏移量赋给对应中断号的偏移量单元(OffsetLow/OffsetHigh)。大概过程讲得差不多了,相关程序为T-HookInt,我们再看看代码吧!
      
      VOID
      HookInt(VOID)
      {
       //保存IDT入口的基地址和限制信息的数据结构;
       IDTR idtr;
       //记录IDT数组的指针,通过它可以查找到我们需要Hook中断号对应的中断门;
       PIDTENTRY IdtEntry;
      
       //汇编指令sidt,获取IDT入口信息;

    页码:[1] [2] [3] [4] [5] [6] [7] [8] [9]8页、共9页

         

          设为首页       |       加入收藏       |       广告服务       |       友情链接       |       版权申明      

    Copyriht 2007 - 2008 ©  科普之友 All right reserved