ZjiÜt∞nφ p°φtomnosti viru v pam∞tiK 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. Vytvo°enφ novΘ slu₧by p°eruÜenφ
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). 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. Vyu₧itφ voln²ch u₧ivatelsk²ch p°eruÜenφ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. |
||