Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > .NET > VB.NET > Whidbey中C运行时函数具备防缓冲溢出功能
【标  题】:Whidbey中C运行时函数具备防缓冲溢出功能
【关键字】:Whidbey
【来  源】:http://blog.joycode.com/shannon/archive/2004/04/20/19941.aspx

Whidbey中C运行时函数具备防缓冲溢出功能

Your Ad Here

从日经看到下面一篇报道:

http://china.nikkeibp.co.jp/china/news/com/com200404130115.html

http://itpro.nikkeibp.co.jp/free/NT/NEWS/20040409/1/

Whidbey中C运行时函数具备防缓冲溢出功能!

微软正在开发的开发工具“Visual Studio 2005”(开发代号:Whidbey)中,将在C运行时函数里采取防止缓冲区溢出的措施。具体而言,就是在strcat、strcpy、strlen等以str开头的各种字符串操作函数与lsearch、memmove等内存区操作函数中,将提供添加了缓冲区长度检查功能的新函数。所谓缓冲溢出,就是指在程序提供的输入缓冲区中通过写入超过缓冲区长度的长数据,来运行非法程序的攻击方法。

  作为新函数,一旦遇到超过缓冲区长度的访问,就会强制终止程序。不仅是微软产品,现有的标准C语言运行时间的字符串操作函数集均不检查缓冲区长度,因此均存在缓冲溢出的潜在危险。

  防缓冲溢出的函数增加了一个提取缓冲区长度的参数。新的安全函数名均在相应的原函数名后面加上了一个“_s”,比如,与strcat函数对应的新函数名为strcat_s。

  例如,对于下列程序,在strcpy函数处就会产生缓冲溢出:


int main( void )
{
 char strDst[5];
 const char* strSrc = "Hello World!";
 strcpy( strDst, strSrc );
 printf( strDst );
 return 0;
}

下面是用新函数对上述代码进行改写后的结果:
int main( void )
{
 char strDst[5];
 const char* strSrc = "Hello World!";
 strcpy_s( strDst, 5, strSrc );
 printf( strDst );
 return 0;
}


  另外,现有的Visual C++如果利用/GS选项进行编译,那么运行时一旦检测到缓冲溢出,也会强制终止程序。而作为Whidbey中的Visual C++,/GS选项在标准状态下是有效(ON)的。顺便提一下,定于今年6月发布的Windows XP Service Pack 2就是在/GS选项下进行编译的。

----------

看strcpy_s的调用方法不由得让我想起vb中调用api时,有字符串参数做为返回值的写法。

中文MSN Messager 6.2:【上一篇】
做了一个picturebox控件:【下一篇】
【相关文章】
  • 在Whidbey中实现Provider
  • Visual Studio Whidbey——Web应用程序开发新功能预览
  • ASP.NET Whidbey中实现Provider
  • 【随机文章】
  • 使SoftICE在程序入口处停下来的一个办法
  • 一百块钱组建无线局域网
  • 【转帖】Linux不是Windows
  • python推荐工具SPE
  • 博客堂不谈技术年会流水账
  • 让你的SQL运行得更快
  • 09月24日病毒预警
  • 关于类的初始化
  • photoshop复制小技巧一则
  • j2ee web service开发(六) 跟其它编程语言写的Web服务通信 Holder类型
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.