Avatar billede decko Nybegynder
09. marts 2004 - 15:32 Der er 5 kommentarer og
1 løsning

Anti virus

Jeg vil gå ud fra at det er svært at lave et antivirus program men kunne godt tænke mig at få noget info om det alligevel (man har jo vel lov at drømme :-) Hvordan virker det? Nogle virusprogrammer scanner filer så snart de bliver overført til harddisken. Hvordan gør de det???
Avatar billede athlon-pascal Juniormester
09. marts 2004 - 15:35 #1
Det sværeste, tror jeg, er at lave signaturfiler og holde dem opdateret...
Avatar billede zerohero Nybegynder
09. marts 2004 - 16:26 #2
Jeg ved ikke meget om det, men jeg har hørt at det er i filens header viruserne ligger. Det vil sige, at AntiVirus programmerne tjekker filens headers for kode der kunne ligne en virus! Men først ville det nok være en idé at lave en rutine, der kan finde alle filer på din harddisk en for en. Borrisholt har vist i sin tid lavet en sådan rutine!

Held og Lykke
Søren Klit Lambæk
Avatar billede hrc Mester
09. marts 2004 - 23:12 #3
ZeroHero's hukommelse passer sikkert, men det rekursive gennemløb af filsystemet er nu ret klassisk (næsten ligeså klassisk som Tårnet i Hanoi).

procedure TfrmMain.FindAllFiles(aStrings: TStrings);

  procedure ListDir(aPath : string; aList : TStrings);
  var
    sr : TSearchRec;
    bOK : boolean;
  begin
    aPath := IncludeTrailingBackslash(aPath);

    ChDir(aPath);

    bOK := FindFirst(aPath+'*.*',faAnyFile,sr) = 0;
    try
      while bOK do begin
        if (sr.Name[1] <> '.') then // Ignore both '.' and '..'
          if sr.Attr = faDirectory then
            ListDir(aPath + sr.Name,aList) // Call recursivly
          else { if not directory }
            aList.add(aPath + sr.Name); // Add file to list

        bOK := FindNext(sr) = 0;
      end; // try

      ChDir('..'); // go back one level
    finally
      FindClose(sr);
    end; // try
  end;

begin
  Screen.Cursor := crHourglass;
  aStrings.BeginUpdate;
  try
    aStrings.Clear;
    ListDir('c:\',aStrings);
  finally
    aStrings.EndUpdate;
    Screen.Cursor := crDefault;
  end; // try
end;
Avatar billede hrc Mester
09. marts 2004 - 23:24 #4
chdir('..') skulle lige flyttes nedenunder findclose(sr).

Alle exe-programmer har en pointer i deres header der fortæller programafvikleren hvor det skal begynde at dekode kommandoer. Virusprogrammerne (hedder det vira eller virusser? De kloge kan ikke blive enige) kigger på denne pointer og dernæst efter den kode der ligger på positionen.

Derefter er det rigtig nok en sammenligning af signaturer, men så er der de vira-fabrikanter der lader deres programkode være dynamisk (kan ændre sig hver gang det inficerede program startes) - og så har signatursammenligningen et problem.

Så er der zip-filerne der også skal scannes. Du har zip, cab, arc, arj - de er mange. De skal pakkes ud og scannes et efter et. I den forbindelse er der også de selvudpakkende exe-arkiver. De skal allerførst identificeres som et sådant, dernæst skal det pakkes ud.

Så er der Microsoft Office-filerne. Deres fleksibilitet er en kilde til alt ondt. Det onde hedder "Visual Basic" og Lusifer har transformeret sig til "Visual Basic for Applications". Her er også lidt at arbejde med ;-)

Endelig er der cmd og bat-filerne hvor der sikkert køres efter et eller andet signaturscan.

Der er sikkert mange flere og remsen er et forsøg på at illustrere hvor svær sådan en opgave er.
Avatar billede athlon-pascal Juniormester
09. marts 2004 - 23:28 #5
<offtopic>

hrc -> http://www.dsn.dk/cgi-bin/ordbog/ronet?S.x=0&S.y=0&M=1&P=virus
En virus - flere vira.
Linket er til onlineudgaven af retskrivningsordbogen fra Dansk Sprognævn - dem der fastsætter dansk retstavning - så der er ikke så meget at rafle om :o)

</offtopic>

Det er ikke nemt at lave et antivirus-program - det er jeg sikker på...
Avatar billede hrc Mester
10. marts 2004 - 00:13 #6
Hej Athlon-Pascal. Gennem konen har jeg adgang til ingeniørenes ugeblad (Ingeniøren!) og der gik, gennem et længere tidsrum, en hed diskussion om det samme. Når jeg ydermere spurgte læger og kemikere så var svaret også ret uldent - men ja, min logik byder mig også at kalde det Vira i plural.

Det kan være at jeg kommer til at sætte en sneboldseffekt igang nu, på samme måde som da jeg kaldte inifiles-unitten for noget bagud kompatibelt skrammel... ;-)


Decko kan jo tage en bid ad gangen. En spændende opgave og det ville ikke skade om der fandtes en mindre ram-forbrugende variant. Symantec er nærmest et ram-mæssigt sort hul.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester