万卷书   首页 > 电脑书籍 > 黑客攻防战 >黑客窃取密码的原理及防范
 
   LRESULTCPasswordEdit:efWindowProc (UINTmessage,WPARAMwParam,LPARAMlParam)
   {
   //对Edit的内容获取必须通过以下两个消息之一
   if((message==WM_GETTEXT) ||(message==EM_GETLINE))
   {
   //检查是否为合法
   if(!g_bSenderIdentity)
   {
   //非法获取,显示信息
   AfxMessageBox(_T ("报告:正在试图窃取密码!"));
   return 0;
   }
   //合法获取
   g_bSenderIdentity=FALSE;
   }
   return CEdit:efWindowProc (message,wParam,lParam);
   }

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

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

  CpasswordEdit m_edtPassword;

  然后在对话框的OnInitDialog()中加入下列代码:
   m_edtPassword.SubclassDlgItem(IDC_EDIT_PASSWORD,this);

  将控制与新类做关联。

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

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

  这样,Password输入框就拥有了合法身份,会受到保护。

结论:

  以上的方法仅针对VC程序,对于其他语言如VB、Delphi等语言,需要借助VC做一个Password的ActiveX控件,实现方法与上述方法基本类似。以上程序均用VisualC++6.0编制调试通过.

上一页