网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
VC++中非法探取密码的原理及其防范
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式
要接收消息的窗口句柄,我们已经通过上面的代码获取到了,第二个参数就是让Edit控件返回字符的WM_GETTEXT消息了,并将得到的内容保存在szText指定的缓冲区中。从而成功完成了一次完整的密码攻击行动。

  防范措施

  既然我们已经彻底分析清楚了此类黑客软件普遍采取的攻击手法,那么我们自然就能制订出一套防范其攻击的措施来。下面我们就要对Password进行保护。

  首先回顾前面介绍的黑软攻击过程,从前面的分析可以看出:Edit控件的漏洞主要在于没有对发送WM_GETTEXT或EM_GETLINE消息者的身份进行检查,只要能获取到Edit窗口句柄,任何进程都可通过其发送WM_GETTEXT或EM_GETLINE消息而没有经过任何形式的身份合法性验证就轻易骗取到密码内容。由此可见,为了确保密码不被非法获取,应当对消息发送者的身份进行合法性验证,这种验证的具体实施方法有很多种,这里仅作为示例给出一种验证消息发送者身份的方法:

  首先创建一个新的、从CEdit继承下来的子类CPasswordEdit并申明全局变量g_bSenderIdentity以表明消息发送者的身份:

BOOL g_bSenderIdentity;  

  然后重载CWnd类的虚函数DefWindowProc(),在这个回调函数中进行具体的身份验证处理:

LRESULTCPasswordEdit::DefWindowProc (UINTmessage,WPARAMwParam,LPARAMlParam)
{
 //对Edit的内容获取必须通过以下两个消息之一
 if((message==WM_GETTEXT) ||(message==EM_GETLINE))
 {
  //检查是否为合法
  if(!g_bSenderIdentity)
  {
   //非法获取,显示信息
   AfxMessageBox(_T ("报告:正在试图窃取密码!"));
   return 0;
  }
  //合法获取
  g_bSenderIdentity=FALSE;
 }
 return CEdit::DefWindowProc (message,wParam,lParam);
}

  接下来在密码输入对话框中做些处理。在对话框中申明一个类成员m_edtPassword:

CPasswordEdit m_edtPassword;

  并在对话框的初始化函数OnInitDialog()中加入下列代码,以完成子类化:

m_edtPassword.SubclassDlgItem(IDC_EDIT_PASSWORD,this);  

  这将控制与新类做关联。之后要在对话框的数据交换函数中将身份设为合法:

void CDlgInput::DoDataExchange (CDataExchange*pDX)
{
 //如果获取数据
 //注意:对于CPropertyPage类这里不需要 if (pDX->m_bSaveAndValidate)条件
 if(pDX->m_bSaveAndValidate)
 {
  g_bSenderIdentity=TRUE;
 }
 CDialog::DoDataExchange(pDX);
 //{{AFX_DATA_MAP(CDlgInput)
  DDX_Text (pDX,IDC_EDIT_PASSWORD,m_sPassword);
 //}}AFX_DATA_MAP
}  

  经过这样的处理,Password输入框就拥有了合法身份并受到保护。只有本应用程序能够提取用户输入的密码内容,而其他任何一个黑客软件也都会因为没有合法身份而不能获取其中的任何信息。

  结论:

  以上的方法仅针对VC程序,对于其他语言如VB、Delphi等语言,需要借助VC做一个Password的ActiveX控件,实现方法与上述方法基本类似。文中给出的全部代码在Windows 2000 Professional + SP4下由Microsoft VisualC++ 6.0编译通过。

  • 下一篇资讯: 用VC++实现http代理
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号