罗云彬VxD教程--客户寄存器结构

http://tech.ddvip.com   2006年03月31日    社区交流

本文详细介绍罗云彬VxD教程--客户寄存器结构

  我们将学习本教程中另外一个重要的结构,叫客户寄存器结构。在本文中,V86指虚拟8086模式。在这里下载例子程序

  理论

  VxDs与正常的win32/win16/DOS应用程序有很大不同。大多数情况下,当其他应用程序正常工作时,它们是休眠的。它们象一个监管者一样工作,其作用是监视ring-3应用程序并在其出错时改正它们。下面是其工作时的典型的情况:

  1、中断发生时

  2、VMM得到控制权时

  3、VMM存贮寄存器组的值时

  4、VMM服务于中断或调用其他VxDs完成此工作时

  5、VMM交还控制权给被中断的程序时

  在以上过程中令人感兴趣的是,VMM只有这一种方式能影响被中断的应用程序,即修改存储的寄存器映象。例如,VMM认为被中断的程序应该返回到另外一个地址,它就修改存储的寄存器映象中CS:IP的值,当这个程序被重新分派时,它将在新的CS:IP处开始执行。

  VMM在客户寄存器结构中存储中断点处的寄存器值。

  Client_Reg_Struc STRUC

  Client_EDI DD ?

  Client_ESI DD ?

  Client_EBP DD ?

  Client_res0 DD ?

  Client_EBX DD ?

  Client_EDX DD ?

  Client_ECX DD ?

  Client_EAX DD ?

  Client_Error DD ?

  Client_EIP DD ?

  Client_CS DW ?

  Client_res1 DW ?

  Client_EFlags DD ?

  Client_ESP DD ?

  Client_SS DW ?

  Client_res2 DW ?

  Client_ES DW ?

  Client_res3 DW ?

  Client_DS DW ?

  Client_res4 DW ?

  Client_FS DW ?

  Client_res5 DW ?

  Client_GS DW ?

  Client_res6 DW ?

  Client_Alt_EIP DD ?

  Client_Alt_CS DW ?

责编:豆豆技术应用

正在加载评论...