对黑客探取密码原理制定相应防范措施                
                
                    所属分类:
                        网络安全 / 加密解密                    
                    阅读数:
                        125
                    
                        收藏 0赞 0分享
                    
                 
                
                    一、非法获取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消息 
        ::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); vCVBBUQhR  
 
  这便是真正起作用的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))  
  {    
    //检查是否为合法  
    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)  
{   
  //如果获取数据  
  //注意:对于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控件,实现方法与上述方法基本类似。以上程序均用VisualC++6.0编制调试通过。 
                                    
             
            
                
                Getright 5 手动脱壳和重建IAT--第二部分(图)
在本参考教程的第一部分我们学习了如何正确地转储(dump)Getright 5. 现在我们将要去找神奇跳转,这样IAT会被正确地转储下来,而不用手工修复了. 要完成这一点,我们需要打败程序中的一些陷阱, 并使它们即使在检测到被执行脱壳时也无所作为. 
让我们开始吧! 
第
                    
                    收藏 0赞 0分享
Getright 5 手动脱壳和重建IAT--第一部分(图)
这是一篇Armadillo加壳软件Getright 5.01的脱壳译文,我是参照Ricardo Narvaja的“Getright 5 脱壳和重建IAT”的文章以及Bighead[DFCG][YCG]的译文,一边实践一边再次翻译的。感谢Ricardo Narvaja和Bighea
                    
                    收藏 0赞 0分享
黑客破解Email账号最常用的三种方法
电子邮件并不是安全的,在邮件的发送、传送和接收整个过程中的每个环节都可能存在薄弱环节,恶意用户如果利用其漏洞,就能够轻易的破解出账号,获得邮件内容。
一、利用邮件服务器操作系统的漏洞
邮件服务器软件是运行在特定的操作系统上的,如Linux、Windows NT/20
                    
                    收藏 0赞 0分享
黑客技术之slv unpackme 脱壳
其实壳本身不要紧,问题是vm里面有个校验。
sm同学手下留情,我勉强能搞一个运行正常的,没精力还原vm了。
在virutalfree的retn上f4, 直到[esp]是一个exe image内的地址f7返回:
0040FA91    B8 BE180000     m
                    
                    收藏 0赞 0分享
Allok Video to 3GP Converter 脱壳+破解(图)
①。
下载好安装后,用DIT查看为MoleBox 2.5.x.
-----------------------------------------------------------------------------
OD,载如RUN,程序完全运行后,ALT+M查看内存映
                    
                    收藏 0赞 0分享
有密码 优酷视频 破解方法
优酷网站的视频可以设置独立的播放密码,不过你可知道:观看有密码的优酷视频其实不需要密码哦。下面讲述两种方法进行优酷视频密码破解的方法。 
优酷视频密码破解一: 
打开FLV解析网站,这里推荐使用该站点:http://www.flvcd.com,从浏览器地址栏复制需要解密的优酷
                    
                    收藏 0赞 0分享
                 查看更多