Windows驱动程序运行时函数的调用

编译器厂商一般在发布其编译器的时候,会连同运行时函数一同发布。Windows驱动程序不能再代码中使用编译器提供的运行时函数,因为大部分运行时函数是基于Win32 API实现的,由于Win 32 API运行在用户模式(RIng3层),驱动程序运行在内核模式(RIng0层),运行在内核模式下的程序不能调用用户模式下提供的API函数的。当然一些少部分的运行时函数并没有调用Win32 API,我们依然可以再驱动程序中去使用它们,比如strcpy等。

Windows提供了内核态的运行时函数,我们应该尽量在驱动程序中使用这些函数。

现在探讨内核程序和应用程序之间的本质区别。除了能用WDK编写内核程序和阅读一部分Windows的内核代码之外,我们还需要了解它们的本质是什么,它们和我们熟悉的应用程序有什么区别。

     Intel的x86处理器是通过Ring级别来进行访问控制的,级别共分4层,从Ring0到Ring3(后面简称R0、R1、R2、R3)。R0层拥有最高的权限,R3层拥有最低的权限。按照Intel原有的构想,应用程序工作在R3层,只能访问R3层的数据;操作系统工作在R0层,可以访问所有层的数据;而其他驱动程序位于R1、R2层[多多关注www.hitidc.com],每一层只能访问本层以及权限更低层的数据。

     这应该是很好的设计,这样操作系统工作在最核心层,没有其他代码可以修改它;其他驱动程序工作在R1、R2层,有要求则向R0层调用,这样可以有效保障操作系统的安全性。但现在的OS,包括Windows和Linux都没有采用4层权限,而只是使用2层——R0层和R3层,分别来存放操作系统数据和应用程序数据,从而导致一旦驱动加载了,就运行在R0层,就拥有了和操作系统同样的权限,可以做任何事情,而所谓的rootkit也就随之而生了。

     rootkit在字面上来理解,是拥有“根权限”的工具。实际上,所有的内核代码都拥有根权限,当然,并不一定它们都叫做rootkit,这要看你用它来做什么。用rootkit技术开发的木马和病毒正在迅速发展,它们往往极难清除,以往杀毒软件可以轻松清除掉系统中病毒的时代似乎已经一去不复返了。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值