信息
NTVDM 的图标进程文件: ntvdm 或者 ntvdm.exe
进程名称: Windows 16-bit Virtual Machine
出品者: Microsoft Corp.
属于: Windows
系统进程: 是
后台程序: 是
使用网络: 否
硬件相关: 否
内存使用: 996K - 8444K
安全等级 (0-5): 0
间谍软件: 否
Adware: 否
广告软件: 否
木马: 否
众所皆知,微软新的桌面操作系统是向下兼容为旧系统开发的应用程序的(比如你可以在xp下玩仙剑奇侠传98柔情版),其中包括运行于DOS内核操作系统以及16位windowsPE 格式可执行文件,以及为DOS开发的只包含16位指令、运行于处理器实模式的可执行程序/命令(排除那些试图直接操作硬件的,因为这逾越了NT内核操作系统给应用程序的权限,或者说它们试图运行于处理器的0环,与操作系统内核运行于同一级别,为了内核的安全性,这显然是不能被允许的)。
微软采用了WOW(Windows On Windows)技术使得在xp等NT内核操作系统上可以运行那些为旧版操作系统开发的应用程序,这样我们便可以正常的运行 Windows 98 的甚至是Windows 3.2的计算器程序等。让我们在Windows XP下打开Windows 3.2的应用程序,如记事本,你就会发现 NTVDM 这个程序幽灵般的出现了,还带上了一个子进程 WOWEXEC.exe,这就是 WOW 的一个体现了。
而针对那些为 DOS 也就是 CPU 运行于实模式的情况下开发的16位程序,微软则使用了DOS虚拟机(VM)的方法。NTVDM 虚拟了一台运行DOS的计算机,使得16位程序能够在其中正常运行。让我们在XP下打开HD-copy,看看吧:ntvdm.exe又冒出来了。
不要怀疑,为了保证不危及NT内核的保护机制,NTVDM被设计成一个完整的模拟器。如你对NTVDM的实现原理有疑惑,不妨亲自动手去试试。
在X86模式下,屏蔽中断的指令不会被执行,因为这会危及到整个系统的安全。而模拟器中,由于整个硬件环境都是虚拟出来的,屏蔽中断能够顺利执行。
用debug执行cli指令,看看if标志位是否被置0就可得真相。