Scanner

  • Na počátku technologie skenování programů (zkráceně skenerů) byl geniální nápad: Vybrat z těla virů nějaké charakteristické skupiny instrukcí a takto získané sekvence použít pro hledání napadených programů. Tato koncepce sice vyžaduje pravidelnou aktualizaci (skener umí najít pouze viry, které zná), ale nabízí za to jedinečnou schopnost rozpoznat napadený program ještě před tím, než ho začneme používat.
    Pokud je uživatel zvyklý prohlížet přicházející programy a diskety aktuální verzí nějakého kvalitního skeneru, snižuje tak výrazným způsobem pravděpodobnost napadení svého systému. Obvykle se totiž viry přece jenom šíří pomaleji než nové verze antivirů.
    Dobré skenery jsou sice do jisté míry schopné rozpoznat i nové varianty starších virů, ale na tuto vlastnost není možné příliš spoléhat. Autor viru je zde ve výhodě a má možnost si vyzkoušet, zda aktuální verze používaných skenerů jeho dílko odhalí, či nikoliv.
    Skenery zvyšují své šance na zachycení nové varianty tak, že používají více různých sekvencí pro jeden vir. To také umožňuje přesnější rozpoznání konkrétního viru a snižuje pravděpodobnost falešného poplachu.
    Ani více sekvencí však nedovoluje dostatečně přesně rozlišit jednotlivé varianty virů tak, jak to vyžaduje třeba CARO konvence pojmenování virů (tu zřejmě dodržuje pouze antivirus F-PROT). Některé skenery se proto snaží o tzv. exaktní identifikaci, kdy po nalezení sekvence ještě spočítají kontrolní součty konstantních oblastí v těle viru a pak teprve mohou s jistotou tvrdit, že se jmenuje třeba Vienna.648.Reboot.A. Pro praktické použití sice není takto detailní rozlišení nezbytně nutné, ale nějaká forma přesnější identifikace snižuje pravděpodobnost, že se antivirový systém pokusí léčit napadený soubor nevhodným postupem a zníčí ho.
    Výběr spolehlivé sekvence býval relativně snadnou záležitostí. Autoři virů se proto pokoušeli znesnadnit detekci svých dílek tím, že začali psát zakódované viry. V takovém případě je možné sekvenci vybrat pouze z velmi malé části kódu - dekryptovací smyčky. Zbytek těla viru je v každém exempláři jiný.
    Opravdová legrace ovšem začíná až s příchodem polymorfních virů, které umí generovat různé zvary dekryptovacích smyček. Pro některé z nich je sice možné stvořit sekvence (nebo několik sekvencí), která vir zachytí, ale ta už obsahuje tolik variabilních částí, že se často najdou i zdravé programy, ve kterých nějaký fragment kódu nebo dat takové sekvenci vyhovuje. Většina polymorfních virů ale generuje takové dekryptory, že nelze hledání podle sekvencí použít. Skenery se nějaký čas snažily o rozpoznávání polymorfních virů pomocí jednoúčelových funkcí, ale to byl vlastně krok zpět k vyhledávacím programům se všemi jejich nevýhodami. Moderní skenery proto obsahují emulátor strojového kódu (algoritmické vyhledávání virů - patří sem i heuristická analýza), kterým se pokouší emulovat provedení smyčky, a pak mohou hledat sekvence až v dekryptovaném těle viru.
    Kódování viru není jedinou metodou, jak skenerům znepříjemnit život. Skenery totiž obvykle nehledají sekvence v celém souboru, ale pouze v jeho vybraných částech. Stačí tedy umístit tělo viru na náhodně vybrané místo uprostřed napadeného programu a vytvořit k němu "cestičku". Kvalitní skener se s tím vypořádá, ale jeho tupější bratříčci mají smůlu.
    Kvalitní skenery obsahují tzv. anti-stealth techniky, které dokážou obcházet aktivní stealth viry. Pokud je totiž takový virus rezidentní v paměti, a antivirus nemá anti-stealth techniky, bude se nám systém jevit jako čistý - nezavirovaný. V takovém případě musí skener spoléhat pouze na test operační paměti, který může (ale nemusí virus) prozradit. 
    Lepší skenery dokážou prohlížet i komprimované soubory (PKLITE, LZEXE, ARJ, ZIP, RAR…). Ukázkovým antivirem je v tomto směru například AntiViral Toolkit Pro (AVP).
    Skenery jsou celkově zřejmě nejdůležitejší částí většiny antivirů. Pokud jsou doplněny heuristickou analýzou dokážou detekovat i neznámé viry. Skenery dokážou prohlížet na výskyt virů: operační pamět, soubory, dokumenty Wordu, tabulky Excelu…, systémové části disku (boot sektor, MBR…). Skenery mohou být navíc ve dvou provedeních: 
     

    Hlavní výhody a nevýhody skenerů:
     

    viry lze objevit, ještě před tím, než se stanou aktivními v systému

    minimální nároky na uživatele

    pokud je součástí heuristická analýza, lze hledat i neznámé viry

    nelze hledat neznámé viry (pokud není heuristická analýza)

    skenery se musí často aktualizovat, jelikož viry přibívají velmi intenzivně