AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Trojaner problem mit UrlDownloadToFile
Thema durchsuchen
Ansicht
Themen-Optionen

Trojaner problem mit UrlDownloadToFile

Ein Thema von SaBaN · begonnen am 4. Aug 2011 · letzter Beitrag vom 7. Aug 2011
Antwort Antwort
Seite 1 von 2  1 2      
SaBaN

Registriert seit: 15. Sep 2005
20 Beiträge
 
Delphi XE5 Professional
 
#1

Trojaner problem mit UrlDownloadToFile

  Alt 4. Aug 2011, 15:07
Hallo,

ich habe für mein Programm eine Updatefunktion hinzugefügt, indem ich eine 2. Programm starte und diese lädt die Datei runter, ersetzt die .exe und startet es.
Alles läuft super, nur bei manchen antivirus Programmen erhalte ich eine Trojaner Meldung, wie z.B. NOD32, ArcaVir, Emsisoft, VBA32 und Ikarus.
Ich benutze für das Herunterladen UrlDownloadToFile und wenn ich die Zeile auskommentiere bekomme ich keine Trojaner Meldung mehr.
AntiVir konnte ich austricksen, indem ich den Umweg mit Button1Click(self) genommen habe.
Nur wie kann ich die anderen antivirus Programme austricksen?
Hier mein Code von Update.exe:
Delphi-Quellcode:
function TForm1.laden(Source, Dest: string): Boolean;
begin
  try
    Result := UrlDownloadToFile(nil, PChar(source), PChar(Dest), 0, nil) = 0;
  except
    Result := False;
  end;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
 Button1Click(Self);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 if laden(url+downloadFile, extractfilepath(application.exename)+downloadFile) then
 begin
  MessageDlg('Das Programm wurde aktualisiert.', mtInformation,[mbOk], 0);
  ShellExecute(Application.Handle,'open',Pchar(ExtractFilePath(application.exename)+'Repertuar.exe'),nil,nil,sw_ShowNormal);
  Form1.Close;
 end
 else
 begin
  MessageDlg('Das Programm konnte nicht aktualisiert werden!!!.', mtWarning,[mbOk], 0);
  ShellExecute(Application.Handle,'open',Pchar(ExtractFilePath(application.exename)+'Repertuar.exe'),nil,nil,sw_ShowNormal);
  Form1.Close;
 end;
end;
URL und DownloadFile sind Konstante.
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
678 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Trojaner problem mit UrlDownloadToFile

  Alt 4. Aug 2011, 15:09
Sowas kann ja nur über "Heuristik" (besser: simple generische Erkennmethoden) erkannt werden. Und dabei werden sicherlich noch andere Parameter überprüft. Ist die Datei signiert? Sowas sollte z.B. die Einschätzung schon zu Deinen Gunsten verschieben.
  Mit Zitat antworten Zitat
SaBaN

Registriert seit: 15. Sep 2005
20 Beiträge
 
Delphi XE5 Professional
 
#3

AW: Trojaner problem mit UrlDownloadToFile

  Alt 4. Aug 2011, 15:23
Sowas kann ja nur über "Heuristik" (besser: simple generische Erkennmethoden) erkannt werden. Und dabei werden sicherlich noch andere Parameter überprüft. Ist die Datei signiert? Sowas sollte z.B. die Einschätzung schon zu Deinen Gunsten verschieben.
Ja das habe ich auch getan und wenn ich die Zeile mit UrlDownloadToFile auskommentiere, mekern gleich 3 antivirus Programme nicht mehr (NOD32, ArcaVir und VBA32).
Nur noch Emsisoft und Ikarus mekern, aber die kenne ich nicht mal, also sind die auch nicht wichtig.
Überprüft habe ich die Datei auf http://virusscan.jotti.org/de/
Was meinst du mit signieren?
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Trojaner problem mit UrlDownloadToFile

  Alt 4. Aug 2011, 16:34
Da bleibt nur deine Exe an die Hersteller zu schicken, damit die ihre Definitionen aktualisieren.

Oder du versuchst es mit Indy statt UrlDownloadToFile. Aber das wiederum erkennt dann vielleicht z.B. Antivir. Aber einen Versuch wäre es ja wert...
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
678 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Trojaner problem mit UrlDownloadToFile

  Alt 4. Aug 2011, 16:37
Mit Signieren meine ich Authenticode.

Nächste Frage: hast Du ordentliche Versionsresourcen? Und ein Manifest eingebunden? Halt alles, was seriöse Programme haben, Malware aber eher nicht. Wobei Signatur und Versionsresource wegen der Herkunftsangabe beide am meisten Gewicht haben könnten (kommt aber total auf die generischen Muster an).

Indy ist tatsächlich ne Überlegung, oder zumindest die Http*-Befehle aus der WinINet (wobei sowas wie Indy und Synapse zwar aufbläht, aber weniger in das generische Muster passen wird).
  Mit Zitat antworten Zitat
SaBaN

Registriert seit: 15. Sep 2005
20 Beiträge
 
Delphi XE5 Professional
 
#6

AW: Trojaner problem mit UrlDownloadToFile

  Alt 4. Aug 2011, 16:42
Nun habe ich eine andere Funktion gefunden und die "laden"-Funtion erzetzt.
Nun merkert nur noch NOD32 und VBA32.
Wenn ich die ShellExecute Zeile auskommentiere mekert NOD32 nicht mehr.
Aber ich muss das Programm auch wieder starten, damit die Benutzer es nicht selber tun müssen.
Hier die Funktion, falls jemand es braucht:
Delphi-Quellcode:
function CopyURL(const URL, OutputFile: string): Boolean;
const
  BufferSize = 2048;
var
  hSession, hURL: HInternet;
  Buffer: array[0..Pred(BufferSize)] of Byte;
  BufferLength: DWORD;
  f: file;
  m: tmsg;
begin
  Result := False;
  hSession := InternetOpen('User', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  try
    hURL := InternetOpenURL(hSession, PChar(URL), nil, 0, 0, 0);
    try
      Assign(f, OutputFile);
      Rewrite(f, 1);
      repeat
        if PeekMessage(M, 0, 0, 0, pm_Remove) then
        begin
          TranslateMessage(M);
          DispatchMessage(M);
        end;
        InternetReadFile(hURL, @Buffer, BufferSize, BufferLength);
        BlockWrite(f, Buffer, BufferLength);
      until BufferLength = 0;
      Close(f);
      Result := True;
    finally
      InternetCloseHandle(hURL);
    end;
  finally
    InternetCloseHandle(hSession);
  end;
end;
Da bleibt nur deine Exe an die Hersteller zu schicken, damit die ihre Definitionen aktualisieren.

Oder du versuchst es mit Indy statt UrlDownloadToFile. Aber das wiederum erkennt dann vielleicht z.B. Antivir. Aber einen Versuch wäre es ja wert...
Ich werde mir das mit Indy anschauen, Danke.
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#7

AW: Trojaner problem mit UrlDownloadToFile

  Alt 4. Aug 2011, 17:05
Du solltest keine Energie dafür investieren, ein harmloses Programm was fälschlicherweise bemängelt wird für die Virenscanner harmlos erscheinen zu lassen. Es ist auch nicht ganz unwahrscheinlich, dass deine ganzen Workarounds mit dem nächsten Update der Antivirensoftware hinfällig werden... sowohl im positiven als auch im negativen Sinne.

Also am sinnvollsten:
Da bleibt nur deine Exe an die Hersteller zu schicken, damit die ihre Definitionen aktualisieren.
  Mit Zitat antworten Zitat
SaBaN

Registriert seit: 15. Sep 2005
20 Beiträge
 
Delphi XE5 Professional
 
#8

AW: Trojaner problem mit UrlDownloadToFile

  Alt 4. Aug 2011, 18:45
Du solltest keine Energie dafür investieren, ein harmloses Programm was fälschlicherweise bemängelt wird für die Virenscanner harmlos erscheinen zu lassen. Es ist auch nicht ganz unwahrscheinlich, dass deine ganzen Workarounds mit dem nächsten Update der Antivirensoftware hinfällig werden... sowohl im positiven als auch im negativen Sinne.

Also am sinnvollsten:
Da bleibt nur deine Exe an die Hersteller zu schicken, damit die ihre Definitionen aktualisieren.
Du hast Recht, aber ich will auch nicht mit den AntiVirus Programmierern meine Energie verbrauchen.
Deswegen habe ich nun mit Indy mein Problem gelöst.
nur VBA32 mekert von 20 antivirus Programmen und das ist mir nicht wichtig.
Hier mein funktionierender Code:
Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
begin
 Button1Click(Self);
end;

procedure TForm1.Button1Click(Sender: TObject);
var responseStream: TFileStream;
begin
 try
  IdHTTP1.Head(Url+downloadFile);
  if (IdHTTP1.ResponseCode <> 404) then
   responseStream := TFileStream.Create(ExtractFilePath(application.exename)+'Repertuar.exe', fmCreate);
  IdHTTP1.Get(url+downloadFile, responseStream); //downloadFile
  MessageDlg('Das Programm wurde aktualisiert.', mtInformation,[mbOk], 0);
  responseStream.free;
 except
  on E: EIdHTTPProtocolException do
   MessageDlg('Das Programm konnte nicht aktualisiert werden!!!.', mtWarning,[mbOk], 0);
 end;
 ShellExecute(Application.Handle,'open',Pchar(ExtractFilePath(application.exename)+'Repertuar.exe'),nil,nil,sw_ShowNormal);
 Form1.Close;
end;
Vielen Dank an euch
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

AW: Trojaner problem mit UrlDownloadToFile

  Alt 4. Aug 2011, 20:06
Delphi-Quellcode:
on E: EIdHTTPProtocolException do
   MessageDlg('Das Programm konnte nicht aktualisiert werden!!!.', mtWarning,[mbOk], 0);
Solche Fehlermeldungen liebe ich. Die kann man sich auch sparen, denn sie hilft werde dem Benutzer noch dir, wenn der Benutzer dich fragt, warum das Update nicht funktioniert hat. Wenn du schon die Exception abfängst, dann kannst du doch auch gleich den Exceptiontext ausgeben. Dann hat man zumindest schon mal einen Anhaltspunkt, was nicht funktioniert hat.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#10

AW: Trojaner problem mit UrlDownloadToFile

  Alt 4. Aug 2011, 23:19
Solche Fehlermeldungen liebe ich.
Dito!
Hier braucht man eine Fehlerinformationsanreicherungs-Strategie:
Delphi-Quellcode:
try
  // hier der Code für Download
  ...
on E:Exception do
begin
  E.Message := Format('Update konnte nicht von heruntergeladen werden.'#13#10'Url: %s'#13#10, [url+downloadFile])+
    E.Message; // Orginale Fehlermeldung anhängen
  raise; // Exception neu auslösen; MessageDlg zu verwenden wäre ungeschickt
end;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz