K tomu, aby nedocházelo k vícenásobné instalaci viru do paměti, musí virus zjistit, zda je již v paměti přítomen či nikoliv.
Možností, jak zjistit přítomnost viru v paměti je několik, nicméně tato metoda je
nejpoužívanější a dá se velice dobře využít pro psaní obecných rezidentních programů.
Nová služba příslušného přerušení bývá v naprosté většině případů vytvářena v rámci volání
jádra DOSu (přerušení int 21h).
Následuje ukázka mechanismu viru Pojer. Volání přerušení 21h předpokládá číslo
požadované služby v registru AH.
mov ah, 0ffh ; cislo sluzby (test pritomnosti viru) int 21h ; vlastni volani DOSu cmp ax, 1234h ; byl vracen klic pritomnosti ? jne neni_pritomen ; skok na rezidentni instalaci jmp je_pritomen ; instalace se jiz provadet nebude
Po této sekvenci příkazů virus zjistí, zda se má instalovat do paměti, či zdali je již v paměti přítomen. Princip spočívá ve skutečnosti, že za normálních okolností služba DOSu číslo 0ffh neexistuje, a tudíž operační systém zareaguje pouze chybově, tj. vrátí v registru AX nedefinovanou hodnotu s případným nastavením chybového příznaku CF. Je-li již však virus v paměti přítomen, sám "vytvoří" novou službu tohoto přerušení tak, že na volání služby DOSu 0ffh bude vracet návratovou hodnotu (klíč přítomnosti) 1234h v registru AX. Virus tedy přesměruje obsluhu přerušení int 21h na své tělo, které na počátku obsluhy zjišťuje, zda není požadovaná právě nově vytvořená služba.
obsluha_int_21h: cmp ah, 0ffj ; jedna se o test pritomnosti ? jne pokracuj ; ne, pokracuje obsluha int 21h mov ax, 1234h ; ano, nastavi klic pritomnosti iret ; navrat z preruseni pokracuj: ; dalsi sled instrukci
Samozřejmě, že i tato metoda má svá úskalí. V okamžiku, kdy dva různé viry použijí stejné číslo nově vytvořené služby, dojde ke kolizi a tím k možnosti vícenásobné instalace. Obecnější možností je použít místo registru AH obsah celého registru AX. V tom případě se pravděpodobnost kolize zmenší na minimum.
Existuje několik volných přerušení kolem int f5h, která jsou operačním systémem vyhrazena pro potřeby uživatele. Virus má možnost obsadit některé z nich pro své účely. Tuto metodu však nelze doporučit jako bezpečnou, neboť pravděpodobnost kolize s jiným programem, který využije stejné přerušení, je dosti velká. Případné použití má však tu výhodu, že se virus či program nemusí starat o úschovu adresy původní obsluhy, neboť ta v tomto případě neexistuje.