网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > DotNet > VC.NET > 缓冲区溢出还是问题吗?C++/CLI安全编码  

缓冲区溢出还是问题吗?C++/CLI安全编码

2007-01-20  作者:bitsCN整理  来源:中国网管联盟  点评 投稿 收藏

  C++/CLI是对C++的一个扩展,其对所有类型,包括标准C++类,都添加了对属性、事件、垃圾回收、及泛型的支持。

  Visual C++ 2005扩展了对使用C++/CLI(通用语言基础结构)开发运行于带有垃圾回收的虚拟机上的控件及应用程序的支持,而C++/CLI是对C++编程语言的一个扩展,其对所有类型,包括标准C++类,都添加了如属性、事件、垃圾回收、及泛型等特性。

  Visual C++ 2005支持.NET Framework通用语言运行时库(CLR),其是垃圾回收虚拟机Microsoft的实现。Visual C++ 2005对.NET编程的C++语法支持是从Visual C++ .NET 2003中引入的托管扩展C++演化而来的,托管扩展C++仍然被支持,但在倾向于新语法的情况下已不赞成使用。Visual C++ 2005同时也对本地编程添加了新的特性,包括64位处理器架构支持,及提高了安全性的新库函数。

  在本文中,将主要讲解在以最小代价把现有老系统移植到使用CLR的新环境中来时,所要面临的问题,目的是为了确定这些程序是否仍然易受折磨C/C++程序多年的缓冲区溢出的影响。

  例1会要求用户输入用户名及密码,除去用户名之外,程序只接受\"NCC-1701\"为有效的密码。如果用户输入了错误的密码,程序将退出。(这个程序只是作为C++/CLI代码的漏洞测试,而不是演示如何处理密码。) 例1:
网管朋友网www_bitscn_net


1. #include <stdlib.h>
2. #include <stdio.h>
3. #include <windows.h>
4. char buff[1028];
5. struct user {
6. char *name;
7. size_t len;
8. int uid;
9. };
10. bool checkpassword() {
11.  char password[10];
12.  puts(\"Enter 8 character password:\");
13.  gets(password);
14.  if (strcmp(password, \"NCC-1701\") == 0) {
15.   return true;
16.  }
17.  else {
18.   return false;
19.  }
20. }
21. int main(int argc, char *argv[]) {
22.  struct user *userP = (struct user *)0xcdcdcdcd;
23.  size_t userNameLen = 0xdeadbeef;
24.  userP = (struct user *)malloc(sizeof(user));
25.  puts(\"Enter user name:\");
26.  gets(buff);
27.  if (!checkpassword()) {
28.   userNameLen = strlen(buff) + 1;
29.   userP->len = userNameLen;
30.   userP->name = (char *)malloc(userNameLen); 中国网管论坛bbs.bitsCN.com
31.   strcpy(userP->name, buff); // log failed login attempt
32.   exit(-1);
33.  }
34. }



  中国网管联盟bitsCN.com

网管网www_bitscn_com

上一页12 3 下一页
TAGs   安全   编码   问题   溢出   还是   程序   一个   密码   缓冲区   输入      
 上一篇:Pure C++:泛型编程:模板特殊化   下一篇:在VC++应用程序中读取文本数据
相关文章列表
缓冲区溢出还是问题吗?C++/CLI安全编码 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
1.vs2008破解继续使用方法
2.Visual C#多线程参数传递浅析
3.VS在Debug时检测到Loaderlock的解决办法
4.使用C#的BitmapData编程实例
5..NET Web开发震撼之变:.NET MVC框架
6.VC下实现定时任务的方法讨论
7.怎样在 Visual C# .NET 中跟踪和调试
8.C #中的几个线程同步对象方法
最新推荐文章:
1.介绍VC6.0的18个实用小技巧
2..Net下进程外COM服务器的实现
3.用VC 6.0实现串行通信的三种方法
4.基于VC.NET的GDI+编程之CImage
5.在MFC下如何定义全局变量和全局函数
6.Visual C++制作一个Sniffer实例
7.VC++环境下浮动工具条的编程
8.Microsoft .NET Compact Framework 数据
9.VC.NET的Direct3D极速入门宝典
10.VC++.NET中定义和使用MFC DLL
网管论坛交流:
·大家来开心一下吧---看了会很开心的东西-
·中国人不可不知道的知识
·@@小鹏◎◎小鹏同志与某位女明星亲密接触
·◎◎小鹏◎◎发现不明生物,居然正在交配
·[图文]^^^版主是什么?????
·泡论坛的女人是好女人
·做个“水性杨花”的女人
·献给mm俱乐部的所有mm
·深圳一集团企业电脑基础应用培训教程
·■■■■十一遊玩照■■■■■