市场营销课程设置:另类虚拟硬盘,DefineDosDevice设备名欺骗漏洞

来源:百度文库 编辑:中财网 时间:2024/05/03 05:50:55
windows有一个叫"subst"的命令,这个命令可以将文件路径映射成驱动器,具体执行参数如下:
c:\>subst /?
将路径与驱动器号关联。
SUBST [drive1: [drive2:]path]
SUBST drive1: /D
drive1: 指定要指派路径的虚拟驱动器。
[drive2:]path 指定物理驱动器和要指派给虚拟驱动器的
路径。
/D 删除被替换的 (虚拟) 驱动器。
不加任何参数键入 SUBST,可以显示当前虚拟驱动器的清单。
这个程序是如何实现将文件路径映射成驱动器呢?先来研究一下。在system32目录下找到这个程序文件,用W32Dasm将这个程序反汇编,得到输入函数列表,发现有一个KERNEL32.DLL中的函数DefineDosDeviceW(其实,用文本编辑软件打开,就可以看到所有的导入函数了),这个函数应该就是subst的关键了。
问题所在:使用"subst"命令时,你会发现这个命令是无法对一个已经存在的设备进行映射的,例如执行命令"subst c: d:\"(将路径"D:\"映射到"C:"):
c:\>subst c: d:无效参数 - C:
可是直接调用DefineDosDevice函数却没有这个限制,这可是会引起很大的混乱。你完全可以用特殊的路径来代替一个已存在的驱动器来达到欺骗的目的,也可以"删除"(当然,并不是物理上的删除,但完全可以造成无法访问的假象)一个真实的驱动器。也许难以想象,当windows正在运行的时候,装有系统文件的C盘突然消失了……,不过这并不会造系统崩溃,因为windows以将所有要用的文件都加载到内存中了,但此时已经无法再打开桌面上的任何文件、快捷方式,无法弹出开始菜单中的任何子菜单……,真的是很奇妙的事情啊~~(不过要千万小心,不要玩得太过火)。