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

📄 vxd-e5.html

📁 汇编语言编写的虚拟驱动程序
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>EndProc
OnVMClose</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>VxD_PAGEABLE_CODE_ENDS</font></font></font></b>
<p><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>end</font></font></font></b></blockquote>

<h3>
<font face="Arial,Helvetica"><font color="#66FFFF"><font size=+0>Analysis:</font></font></font></h3>

<blockquote><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>Begin_control_dispatch
MESSAGE</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#FFFF99"><font size=-1>&nbsp;&nbsp;&nbsp;
Control_Dispatch Create_VM, OnVMCreate</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#FFFF99"><font size=-1>&nbsp;&nbsp;&nbsp;
Control_Dispatch VM_Terminate2, OnVMClose</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>End_control_dispatch
MESSAGE</font></font></font></b></blockquote>
<font face="Arial,Helvetica"><font size=-1><font color="#CCCCCC">The VxD
processes two control messages, </font><b><font color="#FFFF99">Create_VM</font></b><font color="#CCCCCC">
and </font><b><font color="#FFFF99">VM_Terminate2</font></b><font color="#CCCCCC">.
When </font><b><font color="#FFFF99">Create_VM </font></b><font color="#CCCCCC">control
message is received, it calls </font><b><font color="#FFFF99">OnVMCreate</font></b><font color="#CCCCCC">
procedure. And when it receives </font><b><font color="#FFFF99">VM_Terminate2
</font></b><font color="#CCCCCC">message,
it calls </font><b><font color="#FFFF99">OnVMClose</font></b><font color="#CCCCCC">
procedure.</font></font></font>
<blockquote><b><font face="Arial,Helvetica"><font color="#FFFF99"><font size=-1>VxD_PAGEABLE_DATA_SEG</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp;
MsgTitle db "VxD MessageBox",0</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp;
VMCreated db "A VM is created",0</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp;
VMDestroyed db "A VM is destroyed",0</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#FFFF99"><font size=-1>VxD_PAGEABLE_DATA_ENDS</font></font></font></b></blockquote>
<font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>We put
the data in the pageable data segment.</font></font></font>
<blockquote><b><font face="Arial,Helvetica"><font size=-1><font color="#FFCC33">BeginProc</font><font color="#CCCCCC">
OnVMCreate</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font size=-1><font color="#CCCCCC">&nbsp;&nbsp;&nbsp;
mov ecx, </font><font color="#FFCC33">OFFSET32</font><font color="#CCCCCC">
VMCreated</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>CommonCode:</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font size=-1><font color="#FFCC33">&nbsp;&nbsp;&nbsp;
VMMCall </font><font color="#CCCCCC">Get_sys_vm_handle</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp;
mov eax,MB_OK+MB_ICONEXCLAMATION</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font size=-1><font color="#CCCCCC">&nbsp;&nbsp;&nbsp;
mov edi, </font><font color="#FFCC33">OFFSET32 </font><font color="#CCCCCC">MsgTitle</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp;
xor esi,esi</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp;
xor edx,edx</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font size=-1><font color="#CCCCCC">&nbsp;&nbsp;

</font><font color="#FFCC33">VxDCall </font><font color="#CCCCCC">SHELL_Message</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp;
ret</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font size=-1><font color="#FFCC33">EndProc
</font><font color="#CCCCCC">OnVMCreate</font></font></font></b></blockquote>
<font face="Arial,Helvetica"><font size=-1><b><font color="#FFFF99">OnVMCreate</font></b><font color="#CCCCCC">
procedure is created using </font><b><font color="#FFFF99">BeginProc</font></b><font color="#CCCCCC">
and </font><b><font color="#FFFF99">EndProc</font></b><font color="#CCCCCC">
macros. It puts the parameters for </font><b><font color="#FFFF99">SHELL_Message</font></b><font color="#CCCCCC">
service into the registers. Since we want to display the message box in
the system VM, we cannot use the value in ebx (which is the handle of the
VM that is being created). Instead, we use a VMM service, </font><b><font color="#FFFF99">Get_Sys_VM_Handle</font></b><font color="#CCCCCC">,
to obtain the VM handle of the system VM. This service returns the VM handle
in ebx. We put the addresses of the message and the caption into ecx and
edi, respectively. We don't want to know the response of the user, so we
zero out esi and edx. When all parameters are in the appropriate registers,
we call</font><b><font color="#FFFF99"> SHELL_Message </font></b><font color="#CCCCCC">to
display the message box.</font></font></font>
<blockquote><b><font face="Arial,Helvetica"><font size=-1><font color="#FFCC33">BeginProc
</font><font color="#CCCCCC">OnVMClose</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp;
mov ecx,OFFSET32 VMDestroyed</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp;
jmp CommonCode</font></font></font></b>
<br><b><font face="Arial,Helvetica"><font size=-1><font color="#FFCC33">EndProc</font><font color="#CCCCCC">
OnVMClose</font></font></font></b></blockquote>
<font face="Arial,Helvetica"><font size=-1><b><font color="#FFFF99">OnVMClose</font></b><font color="#CCCCCC">procedure
is simplicity in itself. Since it uses identical code as </font><b><font color="#FFFF99">OnVMCreate</font></b><font color="#CCCCCC">,
it initializes ecx with the address of the different message and then jumps
to the code inside </font><b><font color="#FFFF99">OnVMCreate</font></b><font color="#CCCCCC">.</font></font></font>
<h3>
<font face="Arial,Helvetica"><font color="#66FFFF"><font size=+0>Module
Definition File</font></font></font></h3>

<blockquote><b><tt><font color="#CCCCCC"><font size=-1>VXD MESSAGE</font></font></tt></b><tt></tt>
<p><b><tt><font color="#CCCCCC"><font size=-1>SEGMENTS</font></font></tt></b>
<br><b><tt><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; _LPTEXT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CLASS 'LCODE'&nbsp;&nbsp;&nbsp; PRELOAD NONDISCARDABLE</font></font></tt></b>
<br><b><tt><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; _LTEXT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CLASS 'LCODE'&nbsp;&nbsp;&nbsp; PRELOAD NONDISCARDABLE</font></font></tt></b>
<br><b><tt><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; _LDATA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CLASS 'LCODE'&nbsp;&nbsp;&nbsp; PRELOAD NONDISCARDABLE</font></font></tt></b>
<br><b><tt><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; _TEXT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CLASS 'LCODE'&nbsp;&nbsp;&nbsp; PRELOAD NONDISCARDABLE</font></font></tt></b>
<br><b><tt><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; _DATA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CLASS 'LCODE'&nbsp;&nbsp;&nbsp; PRELOAD NONDISCARDABLE</font></font></tt></b>
<br><b><tt><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; CONST&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CLASS 'LCODE'&nbsp;&nbsp;&nbsp; PRELOAD NONDISCARDABLE</font></font></tt></b>
<br><b><tt><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; _TLS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CLASS 'LCODE'&nbsp;&nbsp;&nbsp; PRELOAD NONDISCARDABLE</font></font></tt></b>
<br><b><tt><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; _BSS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CLASS 'LCODE'&nbsp;&nbsp;&nbsp; PRELOAD NONDISCARDABLE</font></font></tt></b>
<br><b><tt><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; _LMGTABLE&nbsp;&nbsp;&nbsp;
CLASS 'MCODE'&nbsp;&nbsp;&nbsp; PRELOAD NONDISCARDABLE IOPL</font></font></tt></b>
<br><b><tt><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; _LMSGDATA&nbsp;&nbsp;&nbsp;
CLASS 'MCODE'&nbsp;&nbsp;&nbsp; PRELOAD NONDISCARDABLE IOPL</font></font></tt></b>
<br><b><tt><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; _IMSGTABLE&nbsp;&nbsp;
CLASS 'MCODE'&nbsp;&nbsp;&nbsp; PRELOAD DISCARDABLE IOPL</font></font></tt></b>
<br><b><tt><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; _IMSGDATA&nbsp;&nbsp;&nbsp;
CLASS 'MCODE'&nbsp;&nbsp;&nbsp; PRELOAD DISCARDABLE IOPL</font></font></tt></b>
<br><b><tt><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; _ITEXT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CLASS 'ICODE'&nbsp;&nbsp;&nbsp; DISCARDABLE</font></font></tt></b>
<br><b><tt><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; _IDATA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CLASS 'ICODE'&nbsp;&nbsp;&nbsp; DISCARDABLE</font></font></tt></b>
<br><b><tt><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; _PTEXT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CLASS 'PCODE'&nbsp;&nbsp;&nbsp; NONDISCARDABLE</font></font></tt></b>
<br><b><tt><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; _PMSGTABLE&nbsp;&nbsp;
CLASS 'MCODE'&nbsp;&nbsp;&nbsp; NONDISCARDABLE IOPL</font></font></tt></b>
<br><b><tt><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; _PMSGDATA&nbsp;&nbsp;&nbsp;
CLASS 'MCODE'&nbsp;&nbsp;&nbsp; NONDISCARDABLE IOPL</font></font></tt></b>
<br><b><tt><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; _PDATA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CLASS 'PDATA'&nbsp;&nbsp;&nbsp; NONDISCARDABLE SHARED</font></font></tt></b>
<br><b><tt><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; _STEXT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CLASS 'SCODE'&nbsp;&nbsp;&nbsp; RESIDENT</font></font></tt></b>
<br><b><tt><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; _SDATA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CLASS 'SCODE'&nbsp;&nbsp;&nbsp; RESIDENT</font></font></tt></b>
<br><b><tt><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; _DBOSTART&nbsp;&nbsp;&nbsp;
CLASS 'DBOCODE'&nbsp; PRELOAD NONDISCARDABLE CONFORMING</font></font></tt></b>
<br><b><tt><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; _DBOCODE&nbsp;&nbsp;&nbsp;&nbsp;
CLASS 'DBOCODE'&nbsp; PRELOAD NONDISCARDABLE CONFORMING</font></font></tt></b>
<br><b><tt><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; _DBODATA&nbsp;&nbsp;&nbsp;&nbsp;
CLASS 'DBOCODE'&nbsp; PRELOAD NONDISCARDABLE CONFORMING</font></font></tt></b>
<br><b><tt><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; _16ICODE&nbsp;&nbsp;&nbsp;&nbsp;
CLASS '16ICODE'&nbsp; PRELOAD DISCARDABLE</font></font></tt></b>
<br><b><tt><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; _RCODE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CLASS 'RCODE'</font></font></tt></b><tt></tt>
<p><b><tt><font color="#CCCCCC"><font size=-1>EXPORTS</font></font></tt></b><tt></tt>
<p><b><tt><font color="#CCCCCC"><font size=-1>&nbsp;&nbsp;&nbsp; MESSAGE_DDB&nbsp;
@1</font></font></tt></b></blockquote>

<h3>
<font face="Arial,Helvetica"><font color="#66FFFF"><font size=+0>Assembling
process</font></font></font></h3>
<b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>&nbsp;ml
-coff -c -Cx&nbsp; -DMASM6 -DBLD_COFF -DIS_32 message.asm</font></font></font></b>
<p><b><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>&nbsp;link
-vxd -def:message.def message.obj</font></font></font></b>
<h3>
<font face="Arial,Helvetica"><font color="#66FFFF"><font size=+0>VxD Installation</font></font></font></h3>

<ol>
<li>
<font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>Put message.vxd
in \system folder</font></font></font></li>

<li>
<font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>add the
following line inside [386enh] section of system.ini</font></font></font></li>

<ol><font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>device=message.vxd</font></font></font></ol>

<li>
<font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>reboot
your computer</font></font></font></li>
</ol>

<h3>
<font face="Arial,Helvetica"><font color="#66FFFF"><font size=+0>Testing
the VxD</font></font></font></h3>
<font face="Arial,Helvetica"><font color="#CCCCCC"><font size=-1>Create
a DOS box. You will see the message box, displaying the message, "A VM
is created". When you close the DOS box, a message box appears with the
message, "A VM is destroyed".</font></font></font>
<br>
<hr WIDTH="100%">
<center><b>[<a href="http://win32asm.cjb.net">Iczelion's Win32 Assembly
Homepage</a>]</b></center>

</body>
</html>

⌨️ 快捷键说明

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