Delphi i blokowanie na chwilę programu przez antywirus

Delphi i blokowanie na chwilę programu przez antywirus
TO
  • Rejestracja:prawie 5 lat
  • Ostatnio:23 dni
  • Postów:14
0

Witam,

Jak to jest z programem w Delphi i Antywirusem. Napisałem program i instaluję go za pomocą Smart Install Maker. Wszystko fajnie hula, ale przy pierwszym uruchomieniu mojego programu włącza się antywirus Avast z komunikatem „wykryto podejrzany plik” i blokuje uruchomienie mojego programu na kilkadziesiąt sekund trwa skanowanie po czym wyskakuje komunikat, że „plik wydaje się być bezpieczny” i uruchamia program. Potem już program uruchamia się normalnie. Sprawdzałem też inny mój program (prosty) i to samo. Da się to jakoś ominąć, żeby program za pierwszym razem uruchamiał się normalnie bez blokady i skanowania przez Avast ??
Na przykład jak z internetu ściągam jakiś program np. z www.dobreprogramy.pl czy inny portal i instaluję to Avast go nie blokuje i nie skanuje. Jak to jest ??, bo tego nie rozumiem.

Dzięki
Pozdrawiam

tomamiko

woolfik
  • Rejestracja:ponad 17 lat
  • Ostatnio:minuta
  • Postów:1595
1

Mi się tak działo jak użyłem w kodzie aplikacji czegoś co się nie do końća antywirusowi podobało (globalny hook na klawiaturę) napisz zwykły hello world i zobacz czy jest ten sam efekt jak nie to znaczy, że w kodzie aplikacji coś użyłeś takiego co avast uwarza, za potencjalne ryzyko warte sprawdzenia.

SK
  • Rejestracja:prawie 7 lat
  • Ostatnio:dzień
  • Postów:98
2

@tomamiko Każdy antywirus będzie chciał sprawdzić "nowy" plik. Nowy, czyli w 99,99% taki, którego "hasha" nie zna. Uruchamiając znane programy, antywirusy już ich nie skanują, ponieważ mają zawarte informacje, że plik o danych hashu jest bezpieczny. Dodatkowo jest wiele innych czynników, które powodują, że antywirusy bardziej przyglądają się plikowi, np. plik EXE nie jest podpisany cyfrowo.

MY
  • Rejestracja:ponad 9 lat
  • Ostatnio:około 23 godziny
  • Postów:1082
0

@woolfik to może być, ale nie musi od razu podejrzane zachowanie w stylu jakiś hook. Takich symptomów jest masa i antywirus nie będzie w stanie sprawdzić wszystkiego od razu. Możliwości jest tyle, że potrzeba by naprawdę mocnego CPU aby w ułamku sekundy wybrać plik ważący kilka MB sprawdzić go i stwierdzić, że potrzeba dogłębniejszego skanowania.

Sam nie raz się z tym spotkałem w swoim produkcie. A co podejrzanego może robić zwykły program do fakturowania/obsługi magazynu/finansowy? Podejrzewam, że chodzi tu o coś innego.

Dzisiejsze antywirusy mają różne, czasami dziwne, czasami wymyślne mechanizmy wykrywania potencjalnie niepożądanych aplikacji. Najczęściej spotykam się z tym po aktualizacji plików do nowej wersji. Skanowanie raz przez 30 sekund i do kolejnej podmiany plików jest ok. Po prostu antywirus nie zna tego pliku więc sprawdza go.

Inną sytuacją jest przypadek, że antywirus buduje sobie reputację danego pliku. Na takową reputację składa się trochę rzeczy. Na przykład mała popularność naszego pliku. Antywirus może przekazywać statystyki na temat pliku. Jeśli w jego bazie (umieszczonej na serwerach producenta) ma mało wystąpień, albo nawet pojedyncze to o wiele bardziej ryzykowne jak dany plik występuje na 1 000 000 komputerów.

Jeszcze sprawa czy plik jest chociażby podpisany i przez kogo. Programy bez podpisu też mogą być większego ryzyka jeśli chodzi o niechciane oprogramowanie.

Generalnie dla małych twórców oprogramowania czasami będzie ciężko pozbyć się takich sytuacji. Szczególnie jak się tworzy mało popularne i mało znane oprogramowanie występujące na małej ilości stacji roboczych.

KA
  • Rejestracja:ponad 19 lat
  • Ostatnio:około 5 godzin
  • Lokalizacja:Gorlice
3

Z Avastem to ten problem jest starszy od węgla. Jak radzą choćby tutaj https://stackoverflow.com/questions/38690200/when-i-compile-my-c-code-avast-thinks-its-a-virus najlepiej dodać folder w którym jest budowany plik wykonywalny do wykluczeń.


Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
pawelo31
  • Rejestracja:ponad 8 lat
  • Ostatnio:24 dni
  • Postów:34
0

Moja rada. Nie używać Avasta :)

Miang
i windowsa ;)
DA
  • Rejestracja:ponad 2 lata
  • Ostatnio:około 2 godziny
  • Postów:83
0

Analogicznie dzieje się z Avastem w przypadku (bliźniaczego) C++ Builder w każdej postaci, nawet wtedy kiedy odpalany jest program konsolowy w C/C++.

flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:3 minuty
  • Lokalizacja:Tuchów
  • Postów:12150
0

Defender w systemie Windows też skanuje każdy nowo skompilowany plik, przed jego uruchomieniem. I zapewne robi to każde inne szanujące się oprogramowanie antywirusowe, bo tak być powinno, aby użytkownik mógł czuć się bezpieczny.

Tyle że Defender nie pokazywał żadnych okien, a po prostu wtrącał się w tle, skanował plik i po kilku sekundach pozwalał go uruchomić. Ale mnie to irytowało, więc dodałem odpowiednie ścieżki do wykluczeń i z głowy.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 1x, ostatnio: flowCRANE
Pepe
  • Rejestracja:ponad 22 lata
  • Ostatnio:35 minut
  • Postów:491
0

Ja mam bardzo negatywną opinię na temat tzw. programów antywirusowych (swoją opinię przedstawiam na bazie doświadczeń z Microsoft Defender).
Jako programista-amator Delphi widzę na co dzień, że Microsoft (inni podobnie) robi wszystko, aby zniechęcić czy wręcz uniemożliwić małym podmiotom rozwój (poprzez system reputacji, poprzez wymóg podpisu cyfrowego, problemy zgłaszania "false-positive", etc). Zwłaszcza tych, co używają reliktu, zwanego Delphi. O co chodzi?

Pisząc swój program mamy nadzieję, że będzie on czemuś i przede wszystkim komuś służył. Chcemy podzielić się nim ze światem. Często jednak bywa tak, że już NA WŁASNYM komputerze, ten najmądrzejszy i najlepszy program antywirusowy świata blokuje (!) właśnie skompilowany program twierdząc, że to zagrożenie!!! (w najlepszym przypadku blokuje komputer na 5-10 sekund, skanując plik i (w większości przypadków) łaskawie zezwala na dalsze działanie). Na własnym komputerze muszę się użerać z tym pseudo-programem, bo on wie lepiej. To absurd! Pytanie kto jest właścicielem komputera... bo wielki biznes robi wszystko, żebyśmy byli tylko gośćmi... (tak, wykluczenie katalogu pomaga).

Pliki wynikowe Delphi są notorycznie blokowane - najczęstszym wydumanym zagrożeniem jest "Trojan:Script/Wacatac". Mimo, że plik jest na 100% czysty (te same złe doświadczenia mam z NSIS, systemem tworzenia instalatorów). Dlaczego tak się dzieje? Dlaczego, mimo zgłaszania (false-positive) problem wciąż powraca? Nowe wersje sygnatur nic nie zmieniają... wystarczy przekompilować program, zmienić 2 linie czy słowo i bum! ZAGROŻENIE. Żenada!

System reputacji potrafi zablokować pobieranie takiego pliku (w przeglądarce) przez użytkownika - tylko na podstawie tego, że mało osób go pobrało i używało! Choćbyś napisał cudowny program, co leczy raka - nie masz siły przebicia, ludzie się nawet o tym nie dowiedzą - bo już na etapie pobierania, plik jest blokowany jako podejrzany (oczywiście, kilka kliknięć i uda się pobrać - ale mało kto wie jak i mało komu się chce to zrobić - no bo skoro Google Chrome (dla przykładu) mówi "Uważaj - to wirus" - to większość sobie odpuści, nobo przecież ONI wiedzą lepiej).

Z tego co się orientuje, powodem tego może być fakt, że w przeszłości sporo malware/trojanów pisanych było w Delphi (tak samo wykorzystywano NSIS). Stąd, kod Delphi, który używamy jest automatycznie podejrzany i natychmiast blokowany. To duży problem. Z tego powodu są takie absurdy jak blokowanie programu, który nic nie robi (nowa forma, kompiluj - bum! WIRUS - nie trzeba nawet używać funkcji potencjalnie mogących wyrządzić szkody). Albo w przypadku NSIS wystarczy skompilować oficjalny plik przykładowego użycia NSIS i mamy ten sam problem. Tak nie może być - a jednak jest.

Ciekawostka. Ich cudowne metody blokowania programu opierają się (też) na nazwie! Tak, wystarczy w programie użyć "zakazanej, będącej na indeksie" nazwy i koniec. Dla testu, wystarczy skompilować program (sama forma, brak jakiegokolwiek kodu) i uruchomić. Program odpali się - ale zmiana nazwy na zakazaną (tzn. programu uznanego za zagrożenie) z miejsca blokuje wykonanie programu! No jak na firmę wartą miliardy, to sposób jest naprawdę wyśmienity :P

Na swoim komputerze, mam cały katalog wykluczony, bo w przeciwnym razie nie da się pracować. Ale czy o to chodzi? To po co mi program AV?


GS
  • Rejestracja:ponad 14 lat
  • Ostatnio:około 5 godzin
0

Używam oprogramowania firmy ESET, które nie stwarza takich problemów. I polecam je naszym klientom.
ESET skanuje pliki w locie, w sposób niewidoczny dla użytkownika i bez zauważalnego spowolnienia uruchamiania aplikacji.
Minus jest taki że bezpłatna jest tylko 30 dniowa wersja próbna

edytowany 1x, ostatnio: grzegorz_so
Marius.Maximus
  • Rejestracja:ponad 14 lat
  • Ostatnio:około 22 godziny
  • Postów:2062
0

jak już robimy offtop-a to też polecam ESET

jak antywirus utrudnia życie programisty to trzeba dodać odpowiednie wykluczenia i można pracować dalej


--
Nie przyjmuję reklamacji za moje rady, używasz na własną odpowiedzialność.
Programowanie bez formatowania to jak chodzenie ze spodniami spuszczonymi na kostki. Owszem da się ale po pierwsze nie wygodne, po drugie nieprzyzwoicie wygląda.
Przed zaczęciem nowego wątku przeczytam problem XY
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)