Zjištění přítomnosti viru v souboru

Podobně jako v případě vícenásobné instalaci v paměti potřebuje virus vyřešit stejný problém i při infikaci souboru. K odstranění možnosti vícenásobného zavirování programu stejným virem využívající viry pro rozhodnutí, zda daný soubor již je či není jeho tělem infikován, některou z následujících možností:

  • Identifikační řetezec

    Tradiční podpisová metoda. Virus ve svém těle obsahuje na definovaném místě definovaný řetezec znaků, který slouží k detekci jeho přítomnosti. Jak již bylo výše uvedeno v souvislosti s detekcí virů, např. virus Pojer pro svoji identifikaci používá řetězec "XmY?!&" uložený 12 bajtů před koncem souboru.

  • Konkrétní nebo nesmyslný čas souboru

    Metoda využívající zejména možnosti nastavení času souboru na nesmyslný údaj. Virus Vienna nastavuje položku sekund času na hodnotu 62.
    Existují i různé odvozeniny využívající konkrétní čas souboru. Příkladem je virus Datacrime, který poslední tři bity údaje sekund času nastavuje na stejnou hodnotu podle posledních tří bitů minut.

  • Nesmyslné datum souboru

    Jde o nastavení data mimo logický rozsah. Virus Tremor nastavuje rok souboru zvětšený o 100.

  • Kombinace data a času souboru

    Komplikovanější způsob indikace přítomnosti viru, který se snaží zamezit nahodilým shodám. Např. virus OneHalf mění datum a čas souboru podle vzorce (datum mod 1eh)=(čas and 1fh).
    Nevýhodou všech indikací pomocí data a času souboru je jejich nefunkčnost v případě vícenásobného zavirování programu několika různými viry, využívajícími tuto techniku. Tento problém má však daleko obecnější podstatu (viz. obr. 37). Málokdy dokáže virus A odolat programu, který byl později zavirován virem B. Viry totiž nevyhledávají své identifikační řetězce v celém těle programu, ale na přesně definovaném místě, což v uvedeném případě znamená, že aktivní virus A bude hledat svůj identifikační řetězec v těle viru B; tam jej nenalezne a opětovně zaviruje program svým tělem.
    Od problému vícenásobného zavirování jsou oproštěny souborové viry přepisující i duplicitní (doprovodné). Přepisující viry přepisují tělo infikovaného programu a viry duplicitní vytváří naprosto oddělený soubor. Obojí neprodlužuje délku infikovaného programu, a proto zde vícenásobné zavirování nehrozí.

  • Délka souboru

    Netradiční způsob indikace přítomnosti viru. Virus Anthrax zarovnává velikost souboru na hodnotu dělitelnou 16. Pochopitelně, že řada souborů, jejichž nezavirovaná velikost splňuje uvedenou podmínku, nebude virem Anthrax nikdy napadena.

  • Identifikační instrukce

    Zajímavá možnost využívající přepisu první instrukce či několika prvních instrukcí na instrukce identifikační, tj. na instrukce jejichž výskyt je v úvodu programu nepravděpodobný a který charakterizuje přítomnost viru. Může jít např. o sled nop (90h) instrukcí, či jako v případě viru Seventh Son o instrukci dec BP (4dh). Každopádně vždy se jedná o instrukce nevýznamné pro vlastní běh programu.

  • Příznaky v hlavičce EXE souborů

    Některé infektory EXE souborů používají rozličné variace příznaků vybraných položek EXE hlavičky (headeru): Test položky kontrolního součtu na konkrétní hodnotu (virus SysLock testuje na hodnout 7cb6h). Nestandardní signatura EXE souboru (virus Fingers ukládá místo systémové hodnoty 'MZ' hodnotu 'TM'). Definovaná počáteční hodnota registru IP (virus Peach testuje IP na hodnotu 01fch). Kombinovaný příznak (pro virus Invol je příznakem infikace splnění podmínky SS - SP = 5ch; virus Loren testuje, zda pro hodnotu kontrolního součtu platí: ChkSum = CS + IP + 01b3h).
    Virus Mabuhay testuje, zda vstupní bod programu obsahuje stejný kód jako tělo viru.

    Všechny uvedené metody jsou pouze příklady virových mechanismů, ne návod k identifikaci přítomnosti virů. V případě, že virus je aktivní v paměti, uživatel nemusí, vzhledem k možné stealth povaze viru, výše uvedené symptomy zjistit.