![]() |
Datei ausführen wird als Virus erkannt
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 ? |
Re: Datei ausführen wird als Virus erkannt
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. ![]() Ansonsten sind solche Probleme einer "Fehlmeldung" bekannt und es gibt auch schon Unmassen an Threads dazu. z.B.: ![]() 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. |
Re: Datei ausführen wird als Virus erkannt
Sobald ich einen dieser befehle hinzufüge springt Antivir drauf an, ansonsten totenstille :/
Edit: den virus hatte ich schon, daran liegts auf keinen fall |
Re: Datei ausführen wird als Virus erkannt
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 ? |
Re: Datei ausführen wird als Virus erkannt
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 :) ![]() |
Re: Datei ausführen wird als Virus erkannt
Es war also eine Kombination aus der Connectivity-Prüfung und den Dateiöffnern? Gut zu wissen ;)
Sherloc |
Re: Datei ausführen wird als Virus erkannt
Zitat:
|
Re: Datei ausführen wird als Virus erkannt
Zitat:
jop: shellexecute...createprocess etc. führte zusammen mit
Delphi-Quellcode:
zu einer heuristic
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; Edit: mein programm war nonVCL |
Re: Datei ausführen wird als Virus erkannt
Hallo jokerfacehro, relevante Funktionen können auch Encoded werden, um nervige Virenscanner abzustellen.
Delphi-Quellcode:
lg. Astatconst 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; |
Re: Datei ausführen wird als Virus erkannt
[OT]
Delphi-Quellcode:
Sollte auch funktionieren, ist übersichtlicher und spart ein wertvolles if.
uses wininet;
// ... function IsInternetConnected: Boolean; var dwConnectionTypes: DWORD; begin dwConnectionTypes:=INTERNET_CONNECTION_MODEM; result := InternetGetConnectedState(@dwConnectionTypes, 0); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:24 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 by Thomas Breitkreuz