AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Datei ausführen wird als Virus erkannt
Thema durchsuchen
Ansicht
Themen-Optionen

Datei ausführen wird als Virus erkannt

Ein Thema von jokerfacehro · begonnen am 9. Mär 2010 · letzter Beitrag vom 10. Mär 2010
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von jokerfacehro
jokerfacehro

Registriert seit: 13. Feb 2007
306 Beiträge
 
Delphi 7 Enterprise
 
#1

Datei ausführen wird als Virus erkannt

  Alt 9. Mär 2010, 13:38
Hallo,

ich programmiere mit Delphi 7 Enterprise und hab da ein Problem.

ich habe Antivir Classic und das meckert bei meinem programm
unzwar immer dann wenn ich einen der folgenden befehle nutze zum öffnen eines externen programms:

CreateProcess
ShellExecute
ShellExecuteEx


Das nervt ganz schön besonders weil das programm auf mehreren Rechnern laufen soll.
Gibt's da ne alternative zu den befehlen oder ne möglichkeit mit assembler code das muster zu verändern ?
"Never touch a running system administrator !"
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.052 Beiträge
 
Delphi 12 Athens
 
#2

Re: Datei ausführen wird als Virus erkannt

  Alt 9. Mär 2010, 13:49
Es wird nur gemeckert, wenn diese Befehle genutzt werden?

Es gibt öeider wirklich den Fall, daß vorallem Delphi 7 von einem Virus befallen sein kann.
http://www.delphipraxis.net/internal...ighlight=virus

Ansonsten sind solche Probleme einer "Fehlmeldung" bekannt und es gibt auch schon Unmassen an Threads dazu.

z.B.:
http://www.delphipraxis.net/internal...ighlight=virus

Entweder den Code etwas ändern ... im allgemeinen führt das blose Einfügen derser Befehle nicht zu einer Erkennung (viele meiner Programme werden nicht erkannt, obwohl soetwas enthalten ist).

Oder du schickst dein Programm (besser samt QuellCode) an den Virenhersteller, damit er seine Definitionen entsprechend anpassen kann.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von jokerfacehro
jokerfacehro

Registriert seit: 13. Feb 2007
306 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Datei ausführen wird als Virus erkannt

  Alt 9. Mär 2010, 13:51
Sobald ich einen dieser befehle hinzufüge springt Antivir drauf an, ansonsten totenstille :/


Edit: den virus hatte ich schon, daran liegts auf keinen fall
"Never touch a running system administrator !"
  Mit Zitat antworten Zitat
Benutzerbild von jokerfacehro
jokerfacehro

Registriert seit: 13. Feb 2007
306 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Datei ausführen wird als Virus erkannt

  Alt 9. Mär 2010, 13:57
wie soll ich denn den quelltext umschreiben, damit die heuristic nicht anspringt ?

ich meine welche veränderungen im quelltext führen zur änderung des maschinencodes

kommentare et.c is ja eh egal
aber zum beispiel funktionsnamen etc. bringt das was die zu ändern.
oder geht es nur um die reihenfolge der befehle ?
"Never touch a running system administrator !"
  Mit Zitat antworten Zitat
Benutzerbild von jokerfacehro
jokerfacehro

Registriert seit: 13. Feb 2007
306 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Datei ausführen wird als Virus erkannt

  Alt 9. Mär 2010, 14:45
sooo ich hab ne andere funktion zur überprüfung auf internetkonnektivität rausgenommen und jetzt schlägt die heuristic nicht mehr an

hab die getinternetconnectionstate dynamisch eingebunden, so passt jetzt alles zusammen

http://www.swissdelphicenter.ch/de/showcode.php?id=466
"Never touch a running system administrator !"
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.798 Beiträge
 
Delphi 12 Athens
 
#6

Re: Datei ausführen wird als Virus erkannt

  Alt 9. Mär 2010, 14:58
Es war also eine Kombination aus der Connectivity-Prüfung und den Dateiöffnern? Gut zu wissen

Sherloc
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Datei ausführen wird als Virus erkannt

  Alt 9. Mär 2010, 15:09
Zitat von jokerfacehro:
wie soll ich denn den quelltext umschreiben, damit die heuristic nicht anspringt ?
Wenn du sicher bist das kein Virus drinn ist: Einfach das Programm an Hersteller schicken zwecks Signaturkorrektur. Irgenwann wird das "umschiffen" von AV-Scannerfehler nicht mehr mögich sein wenn man das nicht meldet und korrektur einfordert.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von jokerfacehro
jokerfacehro

Registriert seit: 13. Feb 2007
306 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Datei ausführen wird als Virus erkannt

  Alt 9. Mär 2010, 15:15
Zitat von Sherlock:
Es war also eine Kombination aus der Connectivity-Prüfung und den Dateiöffnern? Gut zu wissen

Sherloc

jop:

shellexecute...createprocess etc.

führte zusammen mit

Delphi-Quellcode:
uses wininet;

function IsInternetConnected: Boolean;
var dwConnectionTypes: DWORD;
begin
dwConnectionTypes:=INTERNET_CONNECTION_MODEM;
  if InternetGetConnectedState(@dwConnectionTypes, 0) then
  begin
    Result := True;
  end
  else
  begin
    Result := False;
  end;
end;
zu einer heuristic

Edit: mein programm war nonVCL
"Never touch a running system administrator !"
  Mit Zitat antworten Zitat
Astat

Registriert seit: 2. Dez 2009
Ort: München
320 Beiträge
 
Lazarus
 
#9

Re: Datei ausführen wird als Virus erkannt

  Alt 9. Mär 2010, 23:11
Hallo jokerfacehro, relevante Funktionen können auch Encoded werden, um nervige Virenscanner abzustellen.

Delphi-Quellcode:

const
  INTERNET_CONNECTION_MODEM = 1;
  KEY = '{746BEB0F-8995-4C99-AB60-AABFD294DF8F}';

  k32 : array[0..11] of Byte = (23, 25, 14, 18, 25, 16, 79, 78, 82, 24, 16, 16);
  LLA : array[0..11] of Byte = (48, 19, 29, 24, 48, 21, 30, 14, 29, 14, 5, 61);
  WID : array[0..10] of Byte = (11, 21, 18, 21, 18, 25, 8, 82, 24, 16, 16);
  ICS : array[0..24] of Byte = (53, 18, 8, 25, 14, 18, 25, 8, 59, 25, 8, 63,
    19, 18, 18, 25, 31, 8, 25, 24, 47, 8, 29, 8, 25);

type
  TAPIByteArray = array of Byte;

function Encode(const Text, Key: string): TAPIByteArray;
var
  i, j: integer;
begin
  SetLength(Result, Length(Text));
  move(Text[1], Result[0], Length(Result));
  for i := 1 to Length(Key) do begin
    for j := 1 to Length(Text) do begin
      Result[j - 1] := Result[j - 1] xor Ord(Key[i]);
    end;
  end;
end;

function Decode(APIByteArray: array of byte; Key: string): string;
var
  i, j: integer;
begin
  for i := 1 to Length(Key) do begin
    for j := 1 to Length(APIByteArray) do begin
      APIByteArray[j - 1] := APIByteArray[j - 1] xor Ord(Key[i]);
    end;
  end;
  setlength(Result, length(APIByteArray));
  move(APIByteArray[0], result[1], Length(APIByteArray));
end;

type
  TIGCS = function(lpdwFlags: LPDWORD; dwReserved: DWORD): BOOL; stdcall;
  TLL = function(lpLibFileName: PChar): HMODULE; stdcall;

function IsInternetConnected: Boolean;
var
  dwConnectionTypes: DWORD;
  IGCS: TIGCS;
  LL: TLL;
begin
  LL := GetProcAddress(GetModuleHandle(PChar(Decode(k32, KEY))),
    PChar(Decode(LLA, KEY)));

  IGCS := GetProcAddress(LL(PChar(Decode(WID, KEY))), PChar(Decode(ICS, KEY)));
  dwConnectionTypes := INTERNET_CONNECTION_MODEM;
  Result := IGCS(@dwConnectionTypes, 0);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  IsInternetConnected;
end;
lg. Astat
Lanthan Astat
06810110811210410503210511511603209711003210010110 9032084097103
03211611111604403209711003210010110903210010510103 2108101116122
11610103209010110510810103206711110010103210511003 2068101108112
10410503210310111509910411410510109810111003211910 5114100046
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#10

Re: Datei ausführen wird als Virus erkannt

  Alt 9. Mär 2010, 23:52
[OT]

Delphi-Quellcode:
uses wininet;
// ...
function IsInternetConnected: Boolean;
var dwConnectionTypes: DWORD;
begin
  dwConnectionTypes:=INTERNET_CONNECTION_MODEM;
  result := InternetGetConnectedState(@dwConnectionTypes, 0);
end;
Sollte auch funktionieren, ist übersichtlicher und spart ein wertvolles if.
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  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 16:38 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