(Anti)Virus Selber machen
- Green Snake
- Beiträge: 1394
- Registriert: 22.02.2005 19:08
- Hroudtwolf
- Beiträge: 1416
- Registriert: 30.10.2004 23:33
- Kontaktdaten:
-
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Also wenn man nen Intelligenten Antivirus proggen will würde ich Neuronale Netzwerke empfehlen. Als standardeigenschaft sollte ein Virus immer nach Dateien suchen, die erstmal verdächtig wirken(wenn troja oder vir oder worm oder sowas in der datei steht). Falls dies bei den Dateien nicht zutrifft: einfach mal durchstöbern, was es alles ausführt. Dann such nach irgendwelchen anhaltspunkten auf gefahr(beispiel: format C: oder sowas). Und dann gib ne meldung auf dem bildschirm aus und stoppe den prozess kurzfristig, damit der user zeit hat sich zu entscheiden.Hroudtwolf hat geschrieben:Wie stellst du dir das sonst vor ?(stimmt nciht, kann es mir einfach nicht vorstellen)
Eine Art Vireninstinkt ?
Vieleicht aber auch schwarze Magie?
Die Viren wurde ja nicht von Heut auf Morgen alle inspiziert.
Dieser Prozess läuft schon seit es Viren gibt.
Es gibt aber auch die Datenbank-methode(würde ich keinesfalls empfehlen, außer du lebst nur für deinen antivirus, denn du musst die datenbank täglich updaten).
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
- Green Snake
- Beiträge: 1394
- Registriert: 22.02.2005 19:08
-
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
ReadFile hilftGreen Snake hat geschrieben:aber wie meinst du das mit dem durchstöbern?
wenn man eine exe öffnet, wird sie ausgeführt, dann kann es ja schon zu spät sein.
oder meinst du sie öffnen, zb im editor?

Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
- AndyMars
- Beiträge: 141
- Registriert: 08.09.2004 11:59
- Computerausstattung: Win11 Prof 64bit, i5-13500 @ 4.8 GHz, 32GB RAM, Nvidia RTX 4070 TI
- Wohnort: Zürich, Schweiz
- Kontaktdaten:
@Green Snake: Auch zu Deiner letzten Frage...
Ich weiss das nicht absolut genau, aber generell funktionieren die meisten Virenscanner so:
- Sie hängen sich in das Dateisystem von Windows ein (k.A. wie das geht - führt aber auch immer zu einer Verlangsamung des Systems...). Das heisst, jedes Mal, wenn irgendein Programm auf eine Datei zugreifen möchte, tut dies erst der Virenscanner. Wenn er meint, das die Datei potentiell einen Virus enthält, verhindert er den Zugriff des Programmes.
- Weiter führen Virenscanner auch komplette Scanns von Laufwerken durch. Das kann zu regelmässigen oder bestimmten Zeitpunkten stattfinden (z.B. nach Updates).
- Die Virenscanner erkennen die Viren tatsächlich anhand sogenannter Signaturen. Auf diese Weise erkennt er natürlich nur "alte" Viren. Deshalb ist es auch so wichtig, einen Virenscanner immer wieder zu aktualisieren, am Besten täglich. Es gibt aber sogar Hersteller, welche kürzere Update-Intervalle zulassen (wenige Stunden). In so einer Signaturdatenbank sind ohne weiteres mehrere 10000 Einträge... Die Signatur besteht aus einem eindeutigen Teil des Virencodes (vielleicht auch aus einer Checksumme - das weiss ich nicht so genau).
- Zusätzlich kennen viele Virenscanner auch die sogenannte Heuristik: Dies ist ein Verfahren zum Erkennen von unbekannten Viren (welche nicht in der Signaturdatenbank vorhanden sind). Die Heuristik bremst das System aber zusätzlich und ist nicht immer unbedingt zuverlässig: Das Erkennen von unbekannten Viren ist sehr schwer... manchmal werden auch unschädliche Programme als Viren eingestuft.
Einen professionellen Scanner zu programmieren erachte ich als sehr schwer - jeder der oben genannten Punkte (und noch mehr) erfordert ausgesprochene Spezialisierung in der Programmierung. Man könnte natürlich just for fun einen Virenscanner coden - verlassen würde ich mich auf den dann aber nicht
...
Ich weiss das nicht absolut genau, aber generell funktionieren die meisten Virenscanner so:
- Sie hängen sich in das Dateisystem von Windows ein (k.A. wie das geht - führt aber auch immer zu einer Verlangsamung des Systems...). Das heisst, jedes Mal, wenn irgendein Programm auf eine Datei zugreifen möchte, tut dies erst der Virenscanner. Wenn er meint, das die Datei potentiell einen Virus enthält, verhindert er den Zugriff des Programmes.
- Weiter führen Virenscanner auch komplette Scanns von Laufwerken durch. Das kann zu regelmässigen oder bestimmten Zeitpunkten stattfinden (z.B. nach Updates).
- Die Virenscanner erkennen die Viren tatsächlich anhand sogenannter Signaturen. Auf diese Weise erkennt er natürlich nur "alte" Viren. Deshalb ist es auch so wichtig, einen Virenscanner immer wieder zu aktualisieren, am Besten täglich. Es gibt aber sogar Hersteller, welche kürzere Update-Intervalle zulassen (wenige Stunden). In so einer Signaturdatenbank sind ohne weiteres mehrere 10000 Einträge... Die Signatur besteht aus einem eindeutigen Teil des Virencodes (vielleicht auch aus einer Checksumme - das weiss ich nicht so genau).
- Zusätzlich kennen viele Virenscanner auch die sogenannte Heuristik: Dies ist ein Verfahren zum Erkennen von unbekannten Viren (welche nicht in der Signaturdatenbank vorhanden sind). Die Heuristik bremst das System aber zusätzlich und ist nicht immer unbedingt zuverlässig: Das Erkennen von unbekannten Viren ist sehr schwer... manchmal werden auch unschädliche Programme als Viren eingestuft.
Einen professionellen Scanner zu programmieren erachte ich als sehr schwer - jeder der oben genannten Punkte (und noch mehr) erfordert ausgesprochene Spezialisierung in der Programmierung. Man könnte natürlich just for fun einen Virenscanner coden - verlassen würde ich mich auf den dann aber nicht

Grüsse von AndyMars
nochmal ne andere frage: wie schafft es das anivirus-programm den ganzen computer zu durchsuchen? ich habs mit nextdirectoryentry() und so probiert, aber der schafft nie... Also hier ein
Beispiel:
Wie schaff ichs nun, das ich den ganzen Computer durchsuchen kann 
Beispiel:
Code: Alles auswählen
Ich will das Laufwerk C durchsuchen. Also durchsucht der das. Wenn er bei Dokumente und Einstellungen angelangt ist, soll er dort rein gehen und das durchsuchen. klappt aber nicht. der durchsucht keine einzige datei. wenn er aber dann wieder bei c angelangt ist, fängt er wieder neu an, obwohl ich die position - dort wo er aufgehört hatte zu suchen und in ein anderes verzeichnis gegangen ist - eingespeichert hatte.

[Ich hatte keine Idee...]