ZjiÜt∞nφ p°φtomnosti viru v pam∞ti

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.

  • 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).
    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.

  • 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.


    Zdroj: Computer Press, ???