next up previous contents index
Next: Boot-vírusok eltávolítása Up: Vírusok eltávolítása Previous: Vírusok eltávolítása

  
Fájlvírusok eltávolítása

Bizonyos vírusok esetén nem kell mást tennünk, mint törölni az állományt. Ha például egy felülíró vírus teljes megsemmisítette az eredeti tartalmat, akkor nem tehetünk mást. Akkor is törölnünk kell, ha mondjuk egy companion  vírusról van szó, és ez a fájl maga a vírus. Végül akkor is törlés a tennivaló, ha a fájl valójában nem vírus, hanem trójai program, vagy féreg.

A legegyszerűbb esetben a fájl nem tartalmaz semmilyen fejlécet, csak a futtatható kódot. A DOS-világban ezek a COM típusú állományok. A vírusok például eltolhatják a régi kódot, és beszúrhatják előre a saját kódjukat. Ekkor a vírusirtás a program elején levő vírus kivágását jelenti.

COM fájlok esetén a leggyakoribb módszer, hogy a vírus a program végére másolja magát, és az első pár bájtot lecseréli egy ugróutasításra, mely a vírusra ugrik. Ha végzett a dolgával, a memóriában helyreállítja a program elejét, és utasítja a processzort, hogy ugorjon a program elejére. Az eltávolítás itt az eredeti bájtok megkeresését és visszaírását, valamint a vírus levágását jelenti.

A különböző formátumú fájlokat fertőző vírusokat az adott fájlformátum ismeretének birtokában lehet felismerni és kiirtani. Példaként nézzük a hagyományos DOS-os EXE programok fejlécét:



*main::open_tags
ofszet jelentés
00 ``MZ'' azonosító
02 méret % 512
04 (méret + 511) / 512
06 relokációs bejegyzések száma
08 fejléc mérete paragrafusokban
0a min heap paragrafusok
0c max heap paragrafusok
0e SS
10 SP
12 ellenőrzőösszeg
14 IP
16 CS
18 relokációs tábla eltolása
1a overlay szám



Ahhoz, hogy egy EXE fájlhoz hozzátoldott víruskód lefusson, a vírusnak magára kell állítani a fejlécben a CS és IP értékeket, melyek közül a CS 0 értéke a fejléc után állítja a szegmenst. A fejléc vége a ``fejléc mérete paragrafusban'' bejegyzésből számítható, amit 16-tal kell szorozni, ugyanis ennyi egy paragrafus. A vírus általában a vermet is saját kénye-kedve szerint állítja át, és a 02, 04 ofszeten található érteket az új mérethez igazítja.

A vírusölő feladata az előbbi esetben a CS:IP, SS:SP kibányászása a vírusból (benne kell, hogy legyen, mert az eredeti programot el kell indítani, és be kell állítani neki a megfelelő vermet, hogy nehogy lefagyjon), és az értékek visszaírása a fejlécbe, továbbá le kell vágnia a felesleges hosszt, és ki kell igazítani a méretet.

Az ellenőrzőösszegnek a világon semmi jelentősége nincs, ezért sok vírus használja saját fertőzésének a jelzésére. A vírus nem fertőzi meg azokat a fájlokat, amelyekben már benne van a jele. Mivel az eredeti értéket (ez 0 szokott lenni) a vírusölő nem tudja visszaállítani, megteheti, hogy kinullázza, de ha nem nullázza ki, annak az az előnye, hogy a vírus többet ezt a fájlt nem fertőzi meg.


next up previous contents index
Next: Boot-vírusok eltávolítása Up: Vírusok eltávolítása Previous: Vírusok eltávolítása
Nagy Ferenc Laszlo
1999-05-21