Vyhledávací sekvence

Dalším krokem bylo vytvoření scanneru – programu, který se snažil v souboru najít nějaké posloupnosti instrukcí, typické pro jednotlivé viry.

Pro každý virus se tedy vybere vhodná sekvence znaků – např. B4 3D CD 21 B8 00 00. U testovaných objektů se pak kontroluje, zda neobsahují tuto sekvenci. Pokud ano, je objekt označen jako napadený virem.

Je samozřejmé, že výběr vhodné sekvence znaků, která bude pro detekci viru používána, není jednoduchý – sekvence se nesmí vyskytovat v žádném korektním programu tak, aby nedocházelo k mylným hlášením.

Největší výhoda scanneru, oproti vyhledávacímu programu, spočívá v možnosti snadného a rychlého doplnění informací pro detekci nových virů. V době, kdy se roční nárůst počtu virů pohybuje okolo 2000 kousků je to výhoda velmi podstatná.

Autoři virů se samozřejmě snaží vyhledání svého dítka co nejvíce znesnadnit. Objevuje se nový termín – polymorfní virus. Takový virus se snaží většinu svého kódu pravidelně měnit tak, aby určení vhodné sekvence znaků ztížil či znemožnil. Zpočátku tuto úlohu obstarávala krátká funkce, která vlastní tělo viru zakódovala. Většinou však tato kódovací funkce byla sama o sobě dostatečně dlouhá k tomu, aby poskytla vhodnou sekvenci znaků.

Postupem času se ale algoritmy, zajišťující viru jeho proměnlivost, zdokonalily. Na tuto změnu museli reagovat samozřejmě také autoři antivirových programů. Nějaký čas se snažili pouze doplnit své programy 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í scannery proto obsahují emulátor strojového kódu, kterým se pokouší "napodobit" provedení dekódovací části. V praxi to znamená, že dokáží "rozbalit" zakryptovaný virus do jeho nekódované podoby a sekvence pak hledají až v dekryptovaném těle viru.

Problémem se stává vytvoření korektně pracujícího emulátoru strojového kódu mikroprocesorů Intel. Jeho vytvoření skutečně není triviální problém. Nicméně, jakmile je tento postup k dispozici, stává se detekce většiny polymorfních virů možnou bez větších potíží.

Autoři virů se sice pokoušejí bránit vytvářením složitějších a větších dekyptorů, ale zatím to vypadá, že bez větších nadějí na úspěch.

Uvědomte si ale, že k detekci viru je stále potřeba vhodná identifikační sekvence. To předpokládá, že virus, má–li být scannerem určen, musí jej autor tohoto scanneru znát, musí vybrat vhodnou sekvenci. Uživatel antivirového programu – scanneru, musí samozřejmě používat takovou verzi, která tento virus již umí nalézt.

Tato skutečnost je největší a podstatnou nevýhodou scannerů i vyhledávacích programů. Jejich bezmocnost proti novým virům. Dobře udržovaný scanner sice obvykle dokáže detekovat některé nové varianty starších virů, ale jeho šance nejsou příliš vysoké.