手机缓存文件夹:如何防止Edit框中的Password不被非法获取
来源:百度文库 编辑:偶看新闻 时间:2024/05/04 20:05:25
如何防止Edit框中的Password不被非法获取
Windows虽然是一个功能强大的操作系统,但其存在的一些先天性不足,给黑客留下了许多可乘之机,著名的BO程序就是利用Windows的这些漏洞来危害计算机的安全。笔者最近发现了一个很流行的专门获取Edit框Password的工具,甚至其源代码已在某报纸发表,这无疑是对Edit的Password功能的完全否定。本文将首先分析非法获取Password的原理,然后给出用Visual C++来实现保护Edit框中的Password不被非法获取的对策。
(一) 非法获取Password的原理
Edit是Windows的一个标准控件,当把其Password属性设为True时,就会将输入的内容屏蔽为星号(*),从而达到保护的目的。而Edit框中的内容可通过发WM_GETTEXT,EM_GETLINE消息来获取。黑客程序就是利用Edit的这个特性,首先枚举当前程序的所有子窗口,当发现枚举的窗口是EDIT并且具有ES_PASSWORD属性时,则通过SendMessage向此窗口发送WM_GETTEXT或EM_GETLINE消息,这样Edit框中的内容就一目了然了。
(二) 对Password进行保护
由上述分析可看出,Edit的漏洞在于没有检查发送WM_GETTEXT或EM_GETLINE消息者的身份,只要找到Edit窗口句柄,任何进程都可获取其内容。这里给出一种简单的方法来验证发送消息者的身份是否合法。
1) 创建新CEdit类
从CEdit继承一个子类CPasswordEdit, 申明全局变量g_bAuthorIdentity表明消息发送者的身份:
BOOL g_bAuthorIdentity;
然后响应CWnd的虚函数DefWindowProc,在这个回调函数中进行身份验证:
LRESULT CPasswordEdit::DefWindowProc(UINT message,
WPARAM wParam, LPARAM lParam)
{
// 对Edit的内容获取必须通过以下两个消息之一
if(( message == WM_GETTEXT) ||
( message == EM_GETLINE))
{
// 检查是否为合法
if( !g_bAuthorIdentity)
{
// 非法获取,显示信息
AfxMessageBox(_T("我的密码,可不能让你看哦!"));
//
return 0;
}
// 合法获取
g_bAuthorIdentity = 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)
{
// 如果获取数据
// 注意:对于CPropertyPage类这里不需要
if( pDX- >m_bSaveAndValidate) 条件
if( pDX- >m_bSaveAndValidate)
{
g_bAuthorIdentity = TRUE;
}
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDlgInput)
DDX_Text(pDX, IDC_EDIT_PASSWORD, m_sPassword);
//}}AFX_DATA_MAP
}
这样,Password输入框就会受到保护。
(三) 需要注意的问题
以上的方法仅针对VC程序,对于VB程序,需要借助VC做一个Password的ActiveX 控件,实现方法与上类似。同时以上程序在Visual C++6.0上通过,并且用黑客程序 PWBTool测试通过。
如何防止篮球运动中的伤害?
如何防止泳镜中的哈气?
winform中如何防止密码框中的星号给破解?
Let's EDIT中的特技为什么不能用啊?
IBM笔记本电脑型号ThinkpadBIOS中的password和startup两项为何不可用?
如何添加MSN SPACE中的EDIT IT模块
如何在vc中的edit box写入文字
如何使用hex edit工具查找某程序中的文本?
如何取消Protel 99 SE中New Design Datadase对话框中Password选项卡中的密码?
如何防止魔兽中的鼠标发飘?
如何防止在对外贸易中的诈骗活动!
如何让edit plus不自动生成.bak备份文件
CMOS中的ADMIN PASSWORD怎么删除
如何防止手机外皮不调色
如何防止文件不被删除
温柔如何防止不被强力伤害?
edit命令不可用。
如何使用cool edit
如何使用Cool Edit?
如何防止网络中的插件给我安装工具条?
如何防止自己电脑中的文件夹被删除?
如何防止设备采购过程中的吃回扣行为?
如何防止电脑中的“组策略”被别人修改?
如何防止备份文件夹中的.EXE文件被病毒感染?