Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Hilfe, Ich habe einen Virus programmiert! (https://www.delphipraxis.net/141780-hilfe-ich-habe-einen-virus-programmiert.html)

stiftII 15. Okt 2009 23:24


Hilfe, Ich habe einen Virus programmiert!
 
Hallo.

Ich habe ein Programm geschrieben, welches es mir ermöglicht, über das Windows Kontextmenü Bilder direkt hochzuladen, der Link des hochgeladenen Bildes wird in der Zwischenablage gespeichert.

Aus spass habe ich die Datei bei VirusTotal scannen lassen. Und siehe da. Es wird angezeigt, dass es sich um einen Virus handeln würde O_O.. Um genau zu sein ein Trojaner: "Trojan-Banker.Win32.Banker" wird von ein paar Programmen erkannt.

Was kann ich tun, um diese falsche Erkennung zu vermeiden ?. Hier mein Quelltext:

Delphi-Quellcode:
unit uploader;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,Idhttp, StdCtrls,IdMultiPartFormData,Clipbrd,IniFiles,DateUtils,Registry,
  ExtCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Button1: TButton;
    Memo1: TMemo;
    Label2: TLabel;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Image1: TImage;
    Label3: TLabel;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Label3Click(Sender: TObject);
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}




function CheckIfValid(testsite : string):integer;
begin

  If Pos('URL der gespeicherten Bilddatei',testsite) > 0 then
  begin
    result := 1;
    exit;
  end;

  If Pos('Das war keine Bilddatei!', testsite) > 0 then
  begin
    result := 2;
    exit;
  end;

end;

function ExtractImageUrl(testsite : string):string;
begin
  Delete(testsite,1,Pos('URL der gespeicherten Bilddatei: <a href="', testsite)+strlen('URL der gespeicherten Bilddatei: <a href="')-1);
  Result:= Copy(testsite,0,Pos('"',testsite)-1);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
uploadit : Tidhttp;
thesite : string;
PostData : TIdMultipartFormDataStream;
begin
  uploadit := Tidhttp.Create(nil);
  uploadit.HandleRedirects := TRUE;
  try
  PostData := TIdMultipartFormDataStream.Create;

  PostData.AddFormField('MAX_FILE_SIZE','681984');
  PostData.AddFile('f',ParamStr(1),'image/jpeg');
  PostData.AddFormField('optimize','0');


    thesite:=uploadit.Post('http://666kb.com/u.php',PostData);
  except
  end;

  uploadit.Free;


  case CheckIfValid(thesite) of
    1: Clipboard.AsText := ExtractImageUrl(thesite);
    2: showmessage('Das war keine Bilddatei!'+#10+#13+'(oder es gab einen Fehler bei der Übertragung - zu groß?)');
  else
    ShowMessage('Datei zu Groß / Unbekannter Fehler');
  end;

  memo1.Text := thesite;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
urlc : TClipboard;
begin
ShowMessage(ParamStr(1));
Clipboard.AsText := ParamStr(1);

end;

procedure AddToRegistry;
var regist: TRegistry;
begin
  regist:=TRegistry.Create;
  try
    regist.RootKey:=HKEY_LOCAL_MACHINE;
    regist.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\666kb.exe', true);
    regist.WriteString('', ParamStr(0));
    regist.WriteString('Path', ExtractFilePath(ParamStr(0)));
  finally
    regist.free;
  end;
end;

procedure RemoveFromRegistry;
var regist: TRegistry;
begin
  regist:=TRegistry.Create;
  try
    regist.RootKey:=HKEY_LOCAL_MACHINE;
    regist.DeleteKey('SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\666kb.exe');
  finally
    regist.free;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
uploadit : Tidhttp;
thesite : string;
PostData : TIdMultipartFormDataStream;

ini : TiniFile;
mydll : string;

CurrentDate : string;
begin


  Form1.Visible := False;
  If paramstr(1) = '' then begin
    Form1.Visible := True;
    Form1.Left := 388;
    Form1.Top := 210;
    exit;
   end;

 
  ini:=TIniFile.create(ExtractFilePath(ParamStr(0))+'us.ini');

  //Uploading Image and returning Location
  uploadit := Tidhttp.Create(nil);
  uploadit.HandleRedirects := TRUE;
  try
    PostData := TIdMultipartFormDataStream.Create;

    PostData.AddFormField('MAX_FILE_SIZE','681984');
    PostData.AddFile('f',ParamStr(1),'image/jpeg');
    PostData.AddFormField('optimize','0');


    thesite:=uploadit.Post('http://666kb.com/u.php',PostData);
  except
  end;

  uploadit.Free;

  case CheckIfValid(thesite) of
    1:
    begin
    Clipboard.AsText := ExtractImageUrl(thesite);
    CurrentDate := DateTimeToStr(Now);
    ini.WriteString('Uploaded Files',CurrentDate,ExtractImageUrl(thesite));
    end;
    2: showmessage('Das war keine Bilddatei!'+#10+#13+'(oder es gab einen Fehler bei der Übertragung - zu groß?)');
  else
    ShowMessage('Datei zu Groß / Unbekannter Fehler');
  end;

  memo1.Text := thesite;
  ini.WriteString('Run','FirstRun','False');
  ini.free;
  Application.Terminate;
end;

procedure TForm1.Button3Click(Sender: TObject);
var
uploadit : Tidhttp;
thesite : string;
PostData : TIdMultipartFormDataStream;

ini : TiniFile;
mydll : string;

CurrentDate : string;
begin
  //Ini Management
  ini:=TIniFile.create(ExtractFilePath(ParamStr(0))+
    'us.ini');

  mydll := ExtractFilePath(ParamStr(0))+'u666kb.dll';

  if not (ini.ReadString('Run','Firstrun','') = 'False') then // Register dll file
  begin
    try
      AddToRegistry;
      WinExec(Pchar('regsvr32 '+'"'+mydll+'"'),0);
    finally
      ini.WriteString('Run','FirstRun','False');
      ShowMessage('Installation Successful!'+#10+#13+'You can now upload pictures by using the context menu'+#10+#13+'A link to the uploaded pic will be placed in your clipboard than.');
      Application.Terminate;
    end
  end else
    label2.WordWrap := TRUE;
    label2.Width := 170;
    ShowMessage('Programme already installed. If you want to reinstall it, remove the us.ini file.');

end;

procedure TForm1.Button4Click(Sender: TObject);
var
uploadit : Tidhttp;
thesite : string;
PostData : TIdMultipartFormDataStream;

ini : TiniFile;
mydll : string;

CurrentDate : string;
begin
  //Ini Management
  ini:=TIniFile.create(ExtractFilePath(ParamStr(0))+
    'us.ini');

  mydll := ExtractFilePath(ParamStr(0))+'u666kb.dll';

  if ini.ReadString('Run','Firstrun','') = 'False' then // Register dll file
  begin
    try
      RemoveFromRegistry;
      WinExec(Pchar('regsvr32 /u '+'"'+mydll+'"'),0);
    finally
      ini.WriteString('Run','FirstRun','True');
      ShowMessage('Programme uninstalled succesfully.');
      Application.Terminate;
    end
  end else
    label2.WordWrap := TRUE;
    label2.Width := 170;
    ShowMessage('Cant Uninstall. Programme is not installed');

end;

procedure TForm1.Label3Click(Sender: TObject);
begin
Application.Terminate;
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
  var
  xmove : integer;
begin
   ReleaseCapture;
   Perform(WM_SYSCOMMAND, $F012, 0);
end;

end.

Meflin 15. Okt 2009 23:26

Re: Hilfe, Ich habe einen Virus programmiert!
 
Zitat:

Zitat von stiftII
Was kann ich tun, um diese falsche Erkennung zu vermeiden ?

An die entsprechenden Hersteller als False Positive einschicken...

alleinherrscher 15. Okt 2009 23:27

Re: Hilfe, Ich habe einen Virus programmiert!
 
Schönen guten Abend!

Such mal nach Hier im Forum suchenHeuristik


z.B:

http://www.delphipraxis.net/internal...ight=heuristik

Passiert schonmal, wenn die Virenscanner Heuristik sehr scharf eingestellt ist...ist aber nicht weiter schlimm.

Luckie 15. Okt 2009 23:28

Re: Hilfe, Ich habe einen Virus programmiert!
 
Such einfach mal im Forum. Das haben wir öfters.

stiftII 15. Okt 2009 23:33

Re: Hilfe, Ich habe einen Virus programmiert!
 
Zitat:

Zitat von Luckie
Such einfach mal im Forum. Das haben wir öfters.

Ihr programmiert auch öfter Viren ? ;D.

Werd mich mal umschauen. Ich denke das Problem ist, dass ich im code eine DLL lade. Vielleicht macht es ja schon einen Unterschied, wenn ich das anders lösen würde.

Grüße,
stift

Luckie 15. Okt 2009 23:36

Re: Hilfe, Ich habe einen Virus programmiert!
 
Kann sein, darf aber nicht sein. Häufig werden Delphiprogramme durch die Heuristik als Virus erkannt, wenn die Indys ins Spiel kommen.

axellang 16. Okt 2009 15:06

Re: Hilfe, Ich habe einen Virus programmiert!
 
Hi stiftII,

also wenn Du D7 verwendest dann tippe ich auf eine infizierte Hier im Forum suchenSysConst.dcu. Also wir benutzen Kompos eines bekannten Anbieters und bei der Installation der Updates wurde der gleiche Trojaner erkannt und das Setup abgebrochen.

Wie sich dann herausstellte, war eine Demo die mit D7 erstellt und vom Setup auf die Platte kopiert wurde, schuld daran.

Das passierte zwar vor ca. 1,5 Monaten aber wer weiß.

Axel

himitsu 16. Okt 2009 15:13

Re: Hilfe, Ich habe einen Virus programmiert!
 
Zitat:

Zitat von axellang
dann tippe ich auf eine infizierte Hier im Forum suchenSysConst.dcu.

falls du nicht die richtigen Threads unter deren Unmassen erkennst ...
so sind die Beiden besser zu finden Hier im Forum suchensysconst virus


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:03 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz