QQ空间代码网Www.Wtto.Net

投递文章 投稿指南 QQ空间代码网:
搜索: 您的位置QQ空间代码网>QQ宝典>QQ黑客>阅读资讯:QQ尾巴病毒的Visual C++实现探讨

QQ尾巴病毒的Visual C++实现探讨

05-16   来源:互联网   作者:大力哥   【 评论:0收藏到QQ书签 添加到百度搜藏 添加到百度搜藏

  在此我对这个回调过程说明几点:

  1、lParam是一个指向CWPSTRUCT结构的指针,这个结构的描述如下:

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

  这时候像我一样的SDK fans也许会会心一笑:这不是窗口回调的那四个铁杆参数么?如你所说,的确是这样,你甚至可以使用switch (p->message) { /* ... */ }这样的代码写成的钩子函数来全面接管QQ窗口。

  2、g_hRich是一个全局变量,它保存的是QQ消息文本框的句柄。这里之所以采用全局变量,是因为我无法从键盘钩子回调函数的参数中获得这个句柄。至于如何获得这个句柄以及这个全局变量的特殊位置,我会在稍后说明。

  3、CallNextHookEx是调用钩子链中的下一个处理过程,换了钦差就会说:“十坛杏花村酒本钦差已经替皇上收下了,现在请巡抚大人把贵省正常的赋税交上来吧。”(-_-#……)这是书写钩子函数中很重要的一个环节,如果少了这一句,那么可能会导致系统的钩子链出现错误,某些程序也会没有响应——事实上我在编写这个仿真程序的时候QQ就当掉了几回。

  4、你也许会问为什么我捕获的是WM_COMMAND消息,这个原因让我来用下面的SDK代码(虽然QQ是用MFC写的,但是用SDK代码才能说明WM_COMMAND和“发送”按钮的关系)来说明:

#define IDC_BTN_SENDMSG 1 // “发送”按钮ID的宏定义// QQ发送消息对话框回调过程·李马伪造版LRESULT CALLBACK ProcSendDlg(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam){ switch (Msg) {  case WM_CLOSE:   EndDialog(hDlg, 0);   break;  case WM_COMMAND:  {   switch (LOWORD(wParam))   {    case IDC_BTN_SENDMSG:     // 发送消息...     break;     // 其它的命令按钮处理部分...   }  }  break;  // 其它的case部分... } return 0;}

  消息发送的整个过程是:当用户单击了“发送”按钮后,这个按钮的父窗口(也就是“发送消息”的对话框)会收到一条WM_COMMAND的通知消息,其中wParam的低位字(即LOWORD(wParam))为这个按钮的ID,然后再调用代码中发送的部分,这个过程如下图:


共5页: 上一页 [1] 2 [3] [4] [5] 下一页
Tags:实现 探讨 病毒 这个 // NULL 消息 发送 DLL  
责任编辑:
  • 请文明参与讨论,禁止漫骂攻击。 用户名:新注册) 密码: 匿名:
    评论总数:0 [ 查看全部 ] 网友评论