⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 csdn_文档中心_vxd.htm

📁 csdn10年中间经典帖子
💻 HTM
📖 第 1 页 / 共 3 页
字号:
                  size=-1>这就是你把一个静态VxD转换成一个动态的VxD所要做的一切。</FONT></FONT></FONT> 
                  <BR><FONT face=Arial,Helvetica><FONT color=#ffffff><FONT 
                  size=-1>一个动态的VxD可以按以下的方法被加载:</FONT></FONT></FONT> 
                  <UL>
                    <LI><FONT face=Arial,Helvetica><FONT size=-1><FONT 
                    color=#ffffff>把它放到你的Windows目录下的</FONT><B><FONT 
                    color=#ffff99>\SYSTEM\IOSUBSYS</FONT></B><FONT 
                    color=#ffffff>目录中。在这个目录里的VxD会被</FONT><B><FONT 
                    color=#ffff99>输入输出监视器(ios)</FONT></B><FONT 
                    color=#ffffff>加载。这些VxD必须支持层设备驱动。所以用这种方法加载你的动态VxD并不是一个好办法。</FONT></FONT></FONT> 

                    <LI><FONT face=Arial,Helvetica><FONT size=-1><FONT 
                    color=#ffffff>用VxD加载服务。<B> </B></FONT><B><FONT 
                    color=#ffff99>VxDLDR</FONT></B><FONT 
                    color=#ffffff>是一个可以加载动态VxD的静态VxD。你可以在其他VxD里面或者在16位代码里面调用它的服务。</FONT></FONT></FONT> 

                    <LI><FONT face=Arial,Helvetica><FONT size=-1><FONT 
                    color=#ffffff>用Win32应用程序里的 </FONT><B><FONT 
                    color=#ffff99>CreateFile</FONT></B><FONT color=#ffffff> 
                    API。你在调用CreateFile时,你的动态VxD要以下面的格式填写:</FONT></FONT></FONT> 
                    <UL><BR><B><FONT face=Arial,Helvetica><FONT 
                      color=#66ff99><FONT 
                      size=-1>\\.\VxD完整路径名</FONT></FONT></FONT></B></UL>
                    <P><BR><FONT face=Arial,Helvetica><FONT color=#ffffff><FONT 
                    size=-1>例如,如果你要加载一个在当前目录下名为FirstVxD的动态VxD,你需要做如下的工作:</FONT></FONT></FONT> 

                    <P><B><FONT face=Arial,Helvetica><FONT color=#ffcc33><FONT 
                    size=-1>.data</FONT></FONT></FONT></B> <BR><B><FONT 
                    face=Arial,Helvetica><FONT color=#ffcc33><FONT 
                    size=-1>VxDName db 
                    "\\.\FirstVxD.VxD",0</FONT></FONT></FONT></B> <BR><B><FONT 
                    face=Arial,Helvetica><FONT color=#ffcc33><FONT 
                    size=-1>......</FONT></FONT></FONT></B> <BR><B><FONT 
                    face=Arial,Helvetica><FONT color=#ffcc33><FONT 
                    size=-1>.data?</FONT></FONT></FONT></B> <BR><B><FONT 
                    face=Arial,Helvetica><FONT color=#ffcc33><FONT 
                    size=-1>hDevice dd ?</FONT></FONT></FONT></B> <BR><B><FONT 
                    face=Arial,Helvetica><FONT color=#ffcc33><FONT 
                    size=-1>.....</FONT></FONT></FONT></B> <BR><B><FONT 
                    face=Arial,Helvetica><FONT color=#ffcc33><FONT 
                    size=-1>.code</FONT></FONT></FONT></B> <BR><B><FONT 
                    face=Arial,Helvetica><FONT color=#ffcc33><FONT 
                    size=-1>.....</FONT></FONT></FONT></B> <BR><B><FONT 
                    face=Arial,Helvetica><FONT color=#ffcc33><FONT 
                    size=-1>invoke CreateFile, addr VxDName,0,0,0,0, 
                    FILE_FLAG_DELETE_ON_CLOSE,0</FONT></FONT></FONT></B> 
                    <BR><B><FONT face=Arial,Helvetica><FONT color=#ffcc33><FONT 
                    size=-1>mov hDevice,eax</FONT></FONT></FONT></B> 
                    <BR><B><FONT face=Arial,Helvetica><FONT color=#ffcc33><FONT 
                    size=-1>......</FONT></FONT></FONT></B> <BR><B><FONT 
                    face=Arial,Helvetica><FONT color=#ffcc33><FONT 
                    size=-1>invoke CloseHandle,hDevice</FONT></FONT></FONT></B> 
                    <BR><B><FONT face=Arial,Helvetica><FONT color=#ffcc33><FONT 
                    size=-1>......</FONT></FONT></FONT></B> 
                  <BR>&nbsp;</P></LI></UL><FONT face=Arial,Helvetica><FONT 
                  size=-1><B><FONT 
                  color=#ffff99>FILE_FLAG_DELETE_ON_CLOSE</FONT></B><FONT 
                  color=#ffffff> 这个标志用来说明该VxD在</FONT><B><FONT 
                  color=#ffff99>CreateFile</FONT></B><FONT 
                  color=#ffffff>返回的句柄关闭时被卸载。</FONT></FONT></FONT> <BR><FONT 
                  face=Arial,Helvetica><FONT size=-1><FONT 
                  color=#ffffff>如果你用CreateFile来加载一个动态VxD,那么这个动态VxD</FONT><B><FONT 
                  color=#ffff99>必须</FONT></B><FONT 
                  color=#ffffff>处理</FONT><B><FONT 
                  color=#ffff99>w32_DeviceIoControl </FONT></B><FONT 
                  color=#ffffff>消息。当你的动态VxD第一次被CreateFile函数加载的时候,</FONT><B><FONT 
                  color=#ffff99>VWIN32 </FONT></B><FONT 
                  color=#ffffff>向你的VxD发出这个消息。你的VxD响应这个消息,返回时eax中的值必须为零。当应用程序调用<B><FONT 
                  color=#ffff99>DeviceIoControl</FONT></B> 
                  API来与一个动态VxD通讯时,</FONT><B><FONT 
                  color=#ffff99>w32_DeviceIoControl</FONT></B><FONT 
                  color=#ffffff>消息也被发送。我们会在下一章讲到<B><FONT 
                  color=#ffff99>DeviceIoControl</FONT></B><FONT 
                  color=#ffffff>接口。</FONT></FONT></FONT> <BR><FONT 
                  face=Arial,Helvetica><FONT color=#ffffff><FONT 
                  size=-1>一个动态VxD在初始化时收到一个消息:</FONT></FONT></FONT> 
                  <UL>
                    <LI><B><FONT face=Arial,Helvetica><FONT color=#ffff99><FONT 
                    size=-1>Sys_Dynamic_Device_Init</FONT></FONT></FONT></B> 
                    </LI></UL><FONT face=Arial,Helvetica><FONT color=#ffffff><FONT 
                  size=-1>在结束时也收到一个控制消息:</FONT></FONT></FONT> 
                  <UL>
                    <LI><B><FONT face=Arial,Helvetica><FONT color=#ffff99><FONT 
                    size=-1>Sys_Dynamic_Device_Exit</FONT></FONT></FONT></B> 
                    </LI></UL><FONT face=Arial,Helvetica><FONT size=-1><FONT 
                  color=#ffffff>动态VxD不会收到</FONT><B><FONT 
                  color=#ffff99>Sys_Critical_Init</FONT></B><FONT 
                  color=#ffffff>, </FONT><B><FONT 
                  color=#ffff99>Device_Init</FONT></B><FONT 
                  color=#ffffff>和</FONT><B><FONT 
                  color=#ffff99>Init_Complete</FONT></B><FONT 
                  color=#ffffff>控制消息,因为这些消息是在系统虚拟机初始化时发送的。除了这三个消息,动态VxD能收到所有的控制消息,只要它还在内存里。它可以做静态VxD可以做的所有事情。简单的说,动态VxD除了加载机制和接收到的初始化/结束消息跟静态VxD不同以外,它能做静态VxD所能做的一切。</FONT></FONT></FONT> 

                  <H3><FONT face=Arial,Helvetica><FONT color=#66ffff><FONT 
                  size=+0>其它系统控制消息</FONT></FONT></FONT></H3><FONT 
                  face=Arial,Helvetica><FONT color=#ffffff><FONT 
                  size=-1>当VxD在内存里的时候,除了接收和初始化及结束相关的消息外,它还要收到许多别的控制消息。有些消息是关于虚拟机管理器的,有的是关于各种事件的。例如,关于虚拟机的消息如下:</FONT></FONT></FONT> 

                  <UL>
                    <LI><FONT face=Arial,Helvetica><FONT color=#ffffff><FONT 
                    size=-1>Create_VM</FONT></FONT></FONT> 
                    <LI><FONT face=Arial,Helvetica><FONT color=#ffffff><FONT 
                    size=-1>VM_Critical_Init</FONT></FONT></FONT> 
                    <LI><FONT face=Arial,Helvetica><FONT color=#ffffff><FONT 
                    size=-1>VM_Suspend</FONT></FONT></FONT> 
                    <LI><FONT face=Arial,Helvetica><FONT color=#ffffff><FONT 
                    size=-1>VM_Resume</FONT></FONT></FONT> 
                    <LI><FONT face=Arial,Helvetica><FONT color=#ffffff><FONT 
                    size=-1>Close_VM_Notify</FONT></FONT></FONT> 
                    <LI><FONT face=Arial,Helvetica><FONT color=#ffffff><FONT 
                    size=-1>Destroy_VM</FONT></FONT></FONT> </LI></UL><FONT 
                  face=Arial,Helvetica><FONT color=#ffffff><FONT 
                  size=-1>选择地响应你所感兴趣的消息是你自己的责任。</FONT></FONT></FONT> 
                  <H3><FONT face=Arial,Helvetica><FONT color=#66ffff><FONT 
                  size=+0>在VxD内创建函数</FONT></FONT></FONT></H3><FONT 
                  face=Arial,Helvetica><FONT color=#ffffff><FONT 
                  size=-1>你要在一个段里面定义你的函数。你应该首先定义一个段,然后把你的函数放进去。例如,如果你要把你的函数放到一个可调页段中。你应该先定义一个可调页段,像这样:</FONT></FONT></FONT> 

                  <BLOCKQUOTE><B><FONT face=Arial,Helvetica><FONT 
                    color=#ffcc33><FONT 
                    size=-1>VxD_PAGEABLE_CODE_SEG</FONT></FONT></FONT></B> 
                    <P><B><FONT face=Arial,Helvetica><FONT color=#66ff99><FONT 
                    size=-1>(你的函数写在这里)</FONT></FONT></FONT></B> 
                    <P><B><FONT face=Arial,Helvetica><FONT color=#ffcc33><FONT 
                    size=-1>VxD_PAGEABLE_CODE_ENDS</FONT></FONT></FONT></B></P></BLOCKQUOTE><FONT 
                  face=Arial,Helvetica><FONT 
                  size=-1>你可以在一个段里面插入多个的函数。作为一个VxD编写者,你必须决定每一个函数应该放到哪个段里面去。如果你的函数必须时刻存在于内存中,如某些硬件中断处理程序,就把它们放到锁定<BR></FONT></FONT></FONT></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR>
      <TABLE align=center bgColor=#006699 border=0 cellPadding=0 cellSpacing=0 
      width=770>
        <TBODY>
        <TR bgColor=#006699>
          <TD align=middle bgColor=#006699 id=white><FONT 
            color=#ffffff>对该文的评论</FONT></TD>
          <TD align=middle>
            <SCRIPT src="CSDN_文档中心_VxD.files/readnum.htm"></SCRIPT>
          </TD></TR></TBODY></TABLE><BR>
      <DIV align=center>
      <TABLE align=center bgColor=#cccccc border=0 cellPadding=2 cellSpacing=1 
      width=770>
        <TBODY>
        <TR>
          <TH bgColor=#006699 id=white><FONT 
        color=#ffffff>我要评论</FONT></TH></TR></TBODY></TABLE></DIV>
      <DIV align=center>
      <TABLE border=0 width=770>
        <TBODY>
        <TR>
          <TD>你没有登陆,无法发表评论。 请先<A 
            href="http://www.csdn.net/member/login.asp?from=/Develop/read_article.asp?id=555">登陆</A> 
            <A 
        href="http://www.csdn.net/expert/zc.asp">我要注册</A><BR></TD></TR></TBODY></TABLE></DIV><BR>
      <HR noShade SIZE=1 width=770>

      <TABLE border=0 cellPadding=0 cellSpacing=0 width=500>
        <TBODY>
        <TR align=middle>
          <TD height=10 vAlign=bottom><A 
            href="http://www.csdn.net/intro/intro.asp?id=2">网站简介</A> - <A 
            href="http://www.csdn.net/intro/intro.asp?id=5">广告服务</A> - <A 
            href="http://www.csdn.net/map/map.shtm">网站地图</A> - <A 
            href="http://www.csdn.net/help/help.asp">帮助信息</A> - <A 
            href="http://www.csdn.net/intro/intro.asp?id=2">联系方式</A> - <A 
            href="http://www.csdn.net/english">English</A> </TD>
          <TD align=middle rowSpan=3><A 
            href="http://www.hd315.gov.cn/beian/view.asp?bianhao=010202001032100010"><IMG 
            border=0 height=48 src="CSDN_文档中心_VxD.files/biaoshi.gif" 
            width=40></A></TD></TR>
        <TR align=middle>
          <TD vAlign=top>百联美达美公司 版权所有 京ICP证020026号</TD></TR>
        <TR align=middle>
          <TD vAlign=top><FONT face=Verdana>Copyright &copy; CSDN.net, Inc. All 
            rights reserved</FONT></TD></TR>
        <TR>
          <TD height=15></TD>
          <TD></TD></TR></TBODY></TABLE>
      <DIV></DIV>
      <DIV></DIV><!--内容结束//--><!--结束//--></TR></TBODY></DIV></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -