VXD技术漫谈(1)

VXD技术漫谈(1)

 

       说起VxD技术,很多接触电脑的人都会感到陌生,不过提起CIH病毒,我相信您一定不再摇头。

  有过一定Windows编程经验的人可能听说过VxD这个词。80386的保护模式给了我们非常多的“保护”,对于一个不懈地追求自由的人来说,“镀金的笼子也是笼子”,翻遍Windows编程的书籍,也许最终只找到这样一扇通向自由的门:试一试VxD。

  VxD是什么?为什么CIH会如此猖獗?

  CIH运行在Ring 0,挂接IFS(Installable File System)服务,截获File Opening操作,然后把自己“传染”到别的PE格式的文件中,如果到了该发作的时间,它就攻击主板的Flash Memory。

  CIH之所以能破坏硬件资源(通过攻击主板的Flash Memory,达到破坏硬件的目的),正是因为它利用了VxD技术。对于一般的运行于Ring 3的Windows应用程序来说,想破坏主板的Flash Memory是不可能的,因为这是80386保护模式对于代码权限的盘查所不允许的,其结果顶多是引起操作系统异常,也就是在Windows中经常出现的、令用户心跳加速的、蓝底白

  VxD = Virtual “something" Device,这里的x代表Something。比如说VKD代表Virtual Keyboard Device(键盘驱动),VPICD 代表 Virtual Programmable Interrupt Device(可编程中断控制器驱动)。VxD是Windows 3.1、Windows 95的驱动程序模型(Windows 98也支持VxD)。

  在很多人的印象中,VxD是与硬件设备打交道的,对于软件来说没有太大的作用,其理由之一是:用来开发VxD的DDK一般来说都分发给硬件开发商,对于搞软件开发的人来说,SDK才是看家本领,而SDK中对于VxD却是言及甚少。这种想法可是大错而特错了。

  由于VxD运行在系统的Ring 0级,拥有与操作系统同等的级别,所以,VxD可以最大程度地帮助我们走出80386保护模式强加给我们的“镀金的笼子”。我们就拿最近轰动一时的CIH病毒来说一说VxD这柄利剑的强大。字的“General Protection Fault”,在这里,我们该感谢那个“镀金的笼子”,至少它使我们免受邻居家那个只学过Turbo C编程的小孩的搔扰。
了搞破坏,VxD还可以用来做些什么呢?

  在这里我简单谈一下VxD的应用。

  由于VxD可以虚拟根本不存在的硬件,因此,可以利用VxD虚拟硬件狗来破解一些有版权的软件的保护(怎么又是干坏事?我只是想告诉硬件狗的制造者:有些吝啬鬼想通过这种手段来省银子,早作提防啊!)。

  由于VxD工作在操作系统的最底层,所以,掌握它 能使你具备扩展操作系统的能力。有没有想过在Windows 95里按下Ctrl+Alt+Delete键,而后弹出的是你自己设计的对话框(聪明的你一定可以发挥你天才的想像力,比如说显示一张你女朋友的照片,以提醒自己关了电脑之后别忘了去赴约会),VxD可以帮助你跟Windows 95开开玩笑。

  好吧,说点正经的应用。想不想利用VxD来作些“实时”控制之类的东西?当然,作实时工控,首选的操作系统还是DOS,但是如果你经不住Windows那张漂亮面孔的诱惑,也可以在Windows下作“准实时”控制应用。一般来说,通过VxD的协助,在很多情况下,我们还是可以获得比较满意的实时效果的。据测试,486/66的PC机上运行Windows 95,在没有别的应用程序干扰的情况下,VxD可以处理10kHz的硬件中断,不会漏掉一个中断!精心设计你的应用程序和VxD(最好再买台好点的电脑),相信你可以获得满意的“实时”效果。

  再讲一个有趣的应用吧(今天有点发晕了,平时我可不大爱吹牛的)。如果你有一堆16位的DLL,(假设你曾在Windows 31下作过应用程序开发,并曾为讨老板的欢心而奋力地写过许多功能不错的DLL),而你又懒得通过重写代码或者利用烦琐的Thunk移值到Windows 95下,那么,试一试VxD,可能会给你“它山之石可攻玉”的经历。当然,我的前提是你对于VxD已经有了比较多的认识并有一些实战经验,否则你大概会因此导致神经衰弱的。

  再说一个比较有趣的应用。想不想使DOS TSR、Win16应用程序、Win32应用程序之间产生一些协作?想不想打破Win32应用程序4GB独立线性地址空间带来的限制?通过VxD作中介,你会发现原来“万物通于一理”。别相信坐在你对面的那个权威的“No”,相信你自己。

  对于VxD,我们已经说得够多了,也许你已经兴奋得想立刻去书摊上找本《21天轻轻松松掌握VxD技术》来一读为快了。先安静会儿,现在开始泼冷水
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Windows95是一个运行在最高级特权,第0层级别的多线程操作系统。所有的应用程序都运行在最低级特权,第3层级别上。这样就限制了 应用程序对系统的操作。它们不能使用cpu特权指令,不能直接访问I/O端口,等等。你对gdi32,kernal32和user32这三个大的系统组件一 定很熟悉。你肯定会认为这样重要的代码段一定是在第0层级别下运行的。但是实际上,它们和其他的应用程序一样,是在第三层级别下运行的。这就是说它们并不比Windows计算器,或者扫雷游戏有更多的权限。系统的控制实权掌握在虚拟级管理器(VMM) 和虚拟设备驱动程序(VxD)手中。 这一切都是由dos引起的。在Window 3.x的时代,在市场上有很多成功的dos软件。Windows 3.x必须同时运行普通的Windows程序和dos程序,否则,它就会失去市场。 这个局面是很难处理的,因为dos程序和Windows程序有本质的不同。dos程序认为它们拥有系统的一切:键盘,cpu,内存,硬盘等等。dos程序不知道怎样和其他程序合作,而Windows程序(从那时候起)是可靠的多任务合作系统。也就是每个Windows程序都必须通过GetMessage或PeekMessage来和其他程序进行交流。 解决办法就是,在一个8086虚拟机上运行所有的dos程序,而在另一个叫做系统虚拟机的虚拟机上运行其他所有的Windows程序。Windows负责把cpu运算时间轮流的分给每个虚拟机。这样,在Windows 3.x里。Windows程序之间用的是合作多任务,而虚拟机之间用的是优先级多任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值